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

9

我正在使用Rails 3.0.0.beta3和Haml 3.0.0.rc.2,但是我找不到需要放置Haml配置行的位置(也不知道新版本中它们是什么)。在使用Rails 2.3.5和Haml 2时,我会这样做:

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

在environment.rb文件中。或者,在Sinatra中。
set :haml, {:format => :html5}

在Rails 3中,无论我将配置行放在哪里,都会出现未定义的方法或对象错误。在我的主文件中,我曾经这样做过。
2个回答

17
创建文件:
#{Rails.root}/config/initializers/haml.rb

使用 Haml 选项:

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

1
这绝对是在Rails 3中完成它的最佳方式...那么针对每个环境的设置呢?如果我只想在生产环境中启用:ugly,该怎么办? - Ben Kreeger
很遗憾你没有被选为最佳答案,但这确实是最好的。+1 - Jordon Bedwell

8
根据Rails 3的惰性加载哲学,只有在加载ActionView::Base后Haml才会初始化,当配置文件被解析时可能还没有加载。为了在Haml加载后运行代码,需要在ActiveSupport#on_load块中运行它。例如:
ActiveSupport.on_load(:action_vew) do
  Haml::Template.options[:format] = :html5
end

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接