haml + rails + with_options坏了吗?

时间:2011-01-05 08:45:56

标签: ruby-on-rails-3 haml

我决定将我的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,那么它在生产中也是正确的。

1 个答案:

答案 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