2012-02-08 29 views
43

有沒有辦法配置rails以默認使用haml,即當生成腳手架時,會生成scaffold_name/index.html.haml而不是scaffold_name/index.html.erb默認haml

與您如何將config.sass.preferred_syntax = :sass添加到config/application.rb類似,默認情況下生成scaffold_name.sass

嘗試添加下列到config/application.rb

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

,但有以下

$ 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 

我創建了一個可愛的小捆命令來替換HAML文件中的所有僱員再培訓局ened了以下this截屏,但我當腳手架被創建時,m仍然對它的默認設置感興趣!我如何製作haml文件(不是erb!)是默認生成的?

+0

這是Rails。歡迎登機。 – Green 2013-05-02 12:06:38

回答

66

我在我的gemfile中使用gem 'haml-rails', '= 0.3.4'。它會自動生成*.html.haml而不進行任何配置。

+9

除非您知道最新版本的問題,否則通常不需要爲新項目指定版本約束。 – Kelvin 2013-05-17 19:19:42

+1

Haml-rails 0.4版是支持Rails 3的最後一個版本。 – johnnymire 2014-07-02 14:07:43

+0

http://stackoverflow.com/questions/18485147/haml-rails-on-rails-4-0/37693041#37693041 – 2016-06-08 04:07:12

11

在你的應用程序配置,嘗試設置如下:

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

這給了我'錯誤haml [not found]',haml-rails肯定是在gem文件中,我認爲你是沿着正確的路線,但是什麼是適當的template_engine來指定haml或者我如何添加對此的支持? – rudolph9 2012-02-08 03:17:20

+2

嘗試在您的GemFile gem'haml'中添加'haml'寶石,'〜> 3.1.4' gem'haml-rails','0.3.4' – 2012-02-08 18:01:26

0

haml [not found]錯誤通常是因爲包是不完整的。您是否嘗試過運行bundle update,然後重新運行發生器?

+0

否問題依然存在。試過'捆綁更新',問題仍然存在。刪除了'Gemfile.lock'並調用'bundle install',問題仍然存在。 – rudolph9 2012-02-08 15:23:40

8

如果你有寶石「HAML護欄」在你的Gemfile應該是默認,而不是ERB創建HAML文件。

6

這很簡單!

所有你需要做的是以下內容添加到您的Gemfile:

gem 'haml' 
gem 'haml-rails' 

,然後運行bundle install

1

發現這是完整的解決方案

說,如果你有一個滑軌引擎項目名稱爲rails_address

將haml配置添加到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 

新增HAML的DEP到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' 
... 

最後需要lib中HAML寶石/ rails_address.rb

require "rails_address/engine" 
require "haml" 
require "haml-rails" 

module RailsAddress 
end 

執行一個bundle install只是櫃面你還沒有安裝哈姆寶石。

現在,當您通過支架或控制器,你將創建HAML意見產生。

前。

$ 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 
... 
+0

非常感謝,解決了我的問題。儘管如此,我認爲值得一提的是,對於我來說,在lib/rails_address/engine.rb文件中的rails_address.gemspec和'g.template_engine:haml'中指定's.add_dependency'haml''就足以使其生成haml視圖。 (使用rails 5.1.4) – Misu 2018-01-28 12:39:15