使用Rails 3和Haml 3,如何配置Haml?

dpo*_*gg1 9 haml ruby-on-rails ruby-on-rails-3

我正在使用Rails 3.0.0.beta3和Haml 3.0.0.rc.2,我无法找到我需要为Haml放置配置行的地方(也不是新版本中的内容,就此而言) .使用Rails 2.3.5和Haml 2,我会这样做

Haml::Template.options[:format] = :html5
Run Code Online (Sandbox Code Playgroud)

在environment.rb中.或者,在Sinatra,

set :haml, {:format => :html5}
Run Code Online (Sandbox Code Playgroud)

在我的主文件中.但是在Rails 3中,一切都被改变了,无论我把配置线放在哪里,我都会得到一个未定义的方法或未定义的对象错误.

小智 17

创建文件:

#{Rails.root}/config/initializers/haml.rb
Run Code Online (Sandbox Code Playgroud)

使用haml选项:

Haml::Template.options[:attr_wrapper] = '"'
Run Code Online (Sandbox Code Playgroud)


Nat*_*aum 8

根据Rails 3的延迟加载原理,Haml只ActionView::Base在加载后才初始化,这在解析配置文件时可能不会发生.为了在加载Haml后运行代码,您需要在ActiveSupport#on_load块中运行它.例如:

ActiveSupport.on_load(:action_vew) do
  Haml::Template.options[:format] = :html5
end
Run Code Online (Sandbox Code Playgroud)

我正在考虑在加载完整的Haml系统之前使配置可访问的方法,可以通过Haml::Template.options先前定义或添加特殊config.haml哈希来实现.