我决定将我的rails2项目移动到rails3(和ruby 1.9.2)。我有这样的模板:
%table
%thead
- I18n.with_options :scope => [:activerecord, :attributes, :segment] do |i18n|
%tr
%th= i18n.t :name
%th= i18n.t :network
%th= i18n.t :vlan
%th
%tbody
...something here...
在开发和生产模式下,它在rails2上运行良好。但是在rails 3.0.3和haml 3.0.25生产模式下生成错误的html:http://pastebin.com/mJLk8sSs,'table'标签出现两次(并且thead重复了两次)。
在开发模式下,html是正确的。如果我将'丑陋'的haml选项设置为false,那么它在生产中也是正确的。
答案 0 :(得分:0)
此问题已在rails 3.0.2中修复(据我所知仅使用erb)
请参阅:https://rails.lighthouseapp.com/projects/8994/tickets/4429-templates-that-use-with_options
使用带有haml 3.0.25的rails 3.0.3似乎仍然会破坏它。 haml邮件列表上有一些关于它的讨论,但我认为还没有完成任何事情。
(http://osdir.com/ml/haml/2010-08/msg00107.html)
要解决此问题,我只是从模板中删除了with_options。您也可以将选项分配给变量,并将其传递给t
的每次调用。
- i18n_options = {:scope => [:activerecord, :attributes, :segment]}
%tr
%th= t :name, i18n_options
%th= t :network, i18n_options
%th= t :vlan, i18n_options