sintax rails index ruby-on-rails haml ruby-on-rails-3.2

ruby on rails - rails - haml por defecto



haml vs html (6)

¿Hay alguna forma de configurar los rieles para usar haml de manera predeterminada? Es decir, cuando se genera un andamio, se genera el nombre de scaffold_name/index.html.haml correspondiente en lugar de scaffold_name/index.html.erb .

De forma similar a cómo puede agregar config.sass.preferred_syntax = :sass a config/application.rb y se ha generado scaffold_name.sass de forma predeterminada.

Intenté agregar lo siguiente a config/application.rb

config.generators do |g| g.template_engine :haml end

pero en marcha con lo siguiente

$ 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

¡Creé un comando pequeño y agradable para reemplazar todos los archivos erb con archivos haml después de this screencast pero todavía estoy interesado en hacerlo por defecto cuando se crea el andamio! ¿Cómo puedo hacer que los archivos haml (no erb!) Se generen de forma predeterminada?


¡Esto es bastante simple!

Todo lo que necesita hacer es agregar lo siguiente a su Gemfile:

gem ''haml'' gem ''haml-rails''

y luego ejecute bundle install


El haml [not found] es generalmente porque el paquete está incompleto. ¿Ha intentado ejecutar la bundle update y luego volver a ejecutar el generador?


En la configuración de su aplicación, intente configurar lo siguiente:

config.generators do |g| g.template_engine :haml end


Encontré que esta es la solución completa

Diga si tiene un proyecto de Rails Engine llamado rails_address

Agregue la configuración de haml a lib / rails_address / engine.rb

module RailsAddress class Engine < ::Rails::Engine isolate_namespace RailsAddress config.generators do |g| g.template_engine :haml end end end

Agregado haml deps a rails_address.gemspec

... s.add_dependency "rails", "~> 4.1.10" s.add_dependency ''haml'', ''~> 4.0.6'' s.add_dependency ''haml-rails'', ''~> 0.9.0'' ...

Por último, solicite las gemas haml en lib / rails_address.rb

require "rails_address/engine" require "haml" require "haml-rails" module RailsAddress end

Ejecute una bundle install en caso de que aún no haya instalado las gemas haml.

Ahora, cuando genere a través de un andamio o un controlador, creará vistas de haml.

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 ...


Si tiene gemas ''haml-rails'' en su Gemfile, debería crear archivos haml por defecto en lugar de erb.


Yo uso gem ''haml-rails'', ''= 0.3.4'' en mi gemfile. genera automáticamente *.html.haml sin ninguna configuración.