Gibt es eine Möglichkeit, Rails für die Verwendung von haml standardmäßig zu konfigurieren, d. H. Wenn ein Gerüst erstellt wird, wird der entsprechende scaffold_name/index.html.haml
anstelle von scaffold_name/index.html.erb
generiert.
Ähnlich wie Sie config.sass.preferred_syntax = :sass
zu config/application.rb
hinzufügen können und standardmäßig scaffold_name.sass
generiert haben.
Es wurde versucht, Folgendes zu config/application.rb
hinzuzufügen.
config.generators do |g|
g.template_engine :haml
end
aber folgte mit dem folgenden
$ Rails generate scaffold foo name:string
invoke active_record
create db/migrate/20120208152550_create_foos.rb
create app/models/foo.rb
invoke test_unit
create test/unit/foo_test.rb
create test/fixtures/foos.yml
route resources :foos
invoke scaffold_controller
create app/controllers/foos_controller.rb
error haml [not found]
invoke test_unit
create test/functional/foos_controller_test.rb
invoke helper
create app/helpers/foos_helper.rb
invoke test_unit
create test/unit/helpers/foos_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/foos.js.coffee
invoke sass
create app/assets/stylesheets/foos.css.sass
invoke sass
identical app/assets/stylesheets/scaffolds.css.sass
$ Rails destroy scaffold foo
invoke active_record
remove db/migrate/20120208152550_create_foos.rb
remove app/models/foo.rb
invoke test_unit
remove test/unit/foo_test.rb
remove test/fixtures/foos.yml
route resources :foos
invoke scaffold_controller
remove app/controllers/foos_controller.rb
error haml [not found]
invoke test_unit
remove test/functional/foos_controller_test.rb
invoke helper
remove app/helpers/foos_helper.rb
invoke test_unit
remove test/unit/helpers/foos_helper_test.rb
invoke assets
invoke coffee
remove app/assets/javascripts/foos.js.coffee
invoke sass
remove app/assets/stylesheets/foos.css.sass
invoke sass
Ich habe den Befehl Nice little bundle erstellt, um alle erb durch haml-Dateien nach this screencast zu ersetzen, aber ich bin immer noch daran interessiert, es als Standard festzulegen, wenn das Gerüst erstellt wird! Wie mache ich es, so dass Haml-Dateien (nicht erb!) Standardmäßig erzeugt werden?
Ich verwende gem 'haml-Rails', '= 0.3.4'
in meinem gemfile. es generiert automatisch *.html.haml
ohne Konfiguration.
Versuchen Sie in Ihrer Anwendungskonfiguration Folgendes festzulegen:
config.generators do |g|
g.template_engine :haml
end
wenn Sie gem 'haml-Rails' in Ihrer Gemfile-Datei haben, sollten Sie in der Standardeinstellung Haml-Dateien anstelle von erb erstellen.
Das ist ziemlich einfach!
Alles, was Sie tun müssen, ist, Ihrer Gemfile folgendes hinzuzufügen:
gem 'haml'
gem 'haml-Rails'
und dann bundle install
ausführen
Ich habe festgestellt, dass dies die vollständige Lösung ist
Sagen Sie, wenn Sie ein Rails Engine-Projekt mit dem Namen Rails_address
haben.
Fügen Sie die haml config zu lib/Rails_address/engine.rb hinzu.
module RailsAddress
class Engine < ::Rails::Engine
isolate_namespace RailsAddress
config.generators do |g|
g.template_engine :haml
end
end
end
Haml deps zu Rails_address.gemspec hinzugefügt
...
s.add_dependency "Rails", "~> 4.1.10"
s.add_dependency 'haml', '~> 4.0.6'
s.add_dependency 'haml-Rails', '~> 0.9.0'
...
Schließlich benötigen Sie die Haml-Edelsteine in lib/Rails_address.rb
require "Rails_address/engine"
require "haml"
require "haml-Rails"
module RailsAddress
end
Führen Sie einen bundle install
aus, nur wenn Sie die Haml-Edelsteine noch nicht installiert haben.
Wenn Sie jetzt über Gerüst oder Controller generieren, erstellen Sie Haml-Ansichten.
ex.
$ Rails g scaffold Address street:string city:string state:string Zip_code:string
...
invoke haml
exist app/views/Rails_address/addresses
create app/views/Rails_address/addresses/index.html.haml
create app/views/Rails_address/addresses/edit.html.haml
create app/views/Rails_address/addresses/show.html.haml
create app/views/Rails_address/addresses/new.html.haml
create app/views/Rails_address/addresses/_form.html.haml
...
Der haml [not found]
-Fehler liegt in der Regel daran, dass das Bundle unvollständig ist. Haben Sie versucht, bundle update
auszuführen und dann den Generator erneut auszuführen?