2011-01-05 1 views
0

私はrails2プロジェクトをrails3(とruby 1.9.2)に移行することに決めました。私はそのようなテンプレートを持っています:haml + rails3 + with_optionsが壊れていますか?

%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で問題なく動作します。しかし、レール3.0.3とhaml 3.0.25の生産モードでは正しくないhtml:http://pastebin.com/mJLk8sSsが生成され、 'table'タグが2回表示されます(さらに2回繰り返されます)。

開発モードでhtmlが正しい。私が '醜い' hamlオプションをfalseに設定すると、正式にも正しいことになります。

+0

htmlの例は、 'ugly'オプションがtrueに設定されているように見えますか? – Heikki

+0

Heikki、上記のペーストビンのリンクを参照してください。それはデフォルトでは「醜い」が真に設定されている制作モードです。 – Ineu

+0

私はフォローしていません:) "私が '醜い' hamlオプションをtrueに設定すると、生産時にも正しいです。あなたは「偽」を意味しましたか? – Heikki

答えて

0

この問題は(唯一の私の知る限りERBを使用して)、レール3.0.2で修正された

参照:https://rails.lighthouseapp.com/projects/8994/tickets/4429-templates-that-use-with_options

まだHAML 3.0とレール3.0.3を使用して壊れているように見えます。 25。私はまだ何もされていないと思うが、それについての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 
+0

ありがとう、アダム。私は私の意見に大きなパフォーマンス上の影響を及ぼさないように見えるので、今でも生産中でも醜い=偽のオプションをとっています。それが既知の問題であることを知っておくとよいでしょう。 – Ineu

+0

参考:haml gemが含まれていなくても、with_optionsを二重レンダリングしています(Rails 3.0.5)。 – mdrozdziel

+0

はまだerbで壊れている可能性があります – Adam

関連する問題