Ruby on rails 3 哈姆勒+;铁路3&x2B;你的选择被打破了?

Ruby on rails 3 哈姆勒+;铁路3&x2B;你的选择被打破了?,ruby-on-rails-3,haml,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

我决定将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上正常工作。但是在Rails3.0.3和HAML3.0.25上,生产模式生成了错误的html:,“table”标记出现两次(thead也重复了两次)


在开发模式下,html是正确的。在生产中,如果我将“丑恶”haml选项设置为false也是正确的。

这个问题在rails 3.0.2中得到了修复(据我所知,仅使用erb)

见:

使用rails 3.0.3和haml 3.0.25似乎仍然会损坏它。haml邮件列表上有一些关于它的讨论,尽管我认为还没有做任何事情

(http://osdir.com/ml/haml/2010-08/msg00107.html)

为了解决这个问题,我只需从模板中删除with_选项。您也可以将选项分配给变量,并将其传递给
t
的每个调用

 - i18n_options = {:scope => [:activerecord, :attributes, :segment]}
 %tr 
    %th= t :name,    i18n_options                                           
    %th= t :network, i18n_options
    %th= t :vlan,    i18n_options

您的html示例在“丑陋”选项设置为true时看起来如何?Heikki,请参阅上面的pastebin链接。这是生产模式,默认情况下“丑恶”设置为真。我不这么认为:)“如果我将‘丑恶’haml选项设置为true,在生产中也是正确的”。你是说“假”吗?啊,对不起。错误的,更新的问题。谢谢你,亚当。即使在生产中,我现在也会选择丑陋=错误选项,因为它似乎对我的观点没有太大的性能影响。很高兴知道这是一个已知的问题。仅供参考:我正在使用_选项获得双重渲染,甚至没有包括haml gem(Rails 3.0.5)。可能还没有使用erb