2010-04-28 53 views
9

我正在使用Rails 3.0.0.beta3和Haml 3.0.0.rc.2,並且我無法找到需要放置Haml配置行的地方(也不知道它們在新版本中的位置,物)。使用Rails 2.3.5和Haml 2,我會做使用Rails 3和Haml 3,我該如何配置Haml?

Haml::Template.options[:format] = :html5 

in environment.rb。或者,在Sinatra,

set :haml, {:format => :html5} 

在我的主文件中。但是在Rails 3中,一切都變了,無論我把配置行放在哪裏,我都會得到未定義的方法或未定義的對象錯誤。

回答

8

根據Rails 3的延遲加載理念,Haml只會在加載ActionView::Base時初始化自己,這在配置文件被解析時可能不會發生。爲了在Haml加載完成後運行代碼,您需要在ActiveSupport#on_load塊中運行它。例如:

ActiveSupport.on_load(:action_vew) do 
    Haml::Template.options[:format] = :html5 
end 

我考慮做全Haml的系統之前的配置訪問的方式已經被加載,無論是通過定義Haml::Template.options較早或添加特殊config.haml哈希值。

17

創建文件:

#{Rails.root}/config/initializers/haml.rb 

隨着HAML選項:

Haml::Template.options[:attr_wrapper] = '"' 
+1

這是絕對做到在Rails 3中的最佳途徑......怎麼樣每個環境設置?如果我只想在生產中使用':醜陋'? – 2011-07-14 17:42:53

+0

+1,太糟糕了,您沒有被選爲最佳答案,因爲這是最好的答案。 – 2012-10-16 16:03:15