2010-04-28 77 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