haml默认情况下

rud*_*ph9 44 haml ruby-on-rails ruby-on-rails-3.2

有没有办法配置rails默认使用haml,即生成脚手架时生成的scaffold_name/index.html.haml是而不是scaffold_name/index.html.erb.

类似于您可以添加config.sass.preferred_syntax = :sass到默认情况config/application.rbscaffold_name.sass生成的方式.

尝试添加以下内容 config/application.rb

config.generators do |g| 
  g.template_engine :haml
end
Run Code Online (Sandbox Code Playgroud)

但结果如下

$ 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
Run Code Online (Sandbox Code Playgroud)

我创建了一个很好的小包命令,在这个截屏后用haml文件替换所有erb,但是我仍然有兴趣在创建脚手架时将其设置为默认值!我如何制作haml文件(不是erb!)是默认生成的?

ray*_*ibi 67

gem 'haml-rails', '= 0.3.4'在我的gemfile中使用.它自动生成,*.html.haml无需任何配置.

  • 除非您知道最新版本的问题,否则新项目通常不需要指定版本约束. (9认同)

Nic*_*eys 13

在您的应用程序配置中,尝试设置以下内容:

config.generators do |g|
  g.template_engine :haml
end
Run Code Online (Sandbox Code Playgroud)

  • 尝试将'haml'宝石添加到你的GemFile宝石'haml','〜> 3.1.4'宝石'haml-rails','0.3.4' (2认同)

mun*_*a_1 8

如果你的Gemfile中gem'haml-rails',它应默认创建haml文件而不是erb.


kar*_*gen 6

这很简单!

您需要做的就是将以下内容添加到您的Gemfile:

gem 'haml'
gem 'haml-rails'
Run Code Online (Sandbox Code Playgroud)

然后跑 bundle install