与えられたものが機能しているので、falseに設定し、場合によってはに設定したと.button{ :id => "<%= 'class_name' %>" }
仮定します。これにより、次の出力が生成されます。:escape_attrs
:attr_wrapper
"
<div class="button" id="<%= 'class_name' %>"></div>
問題を引き起こしているビットは、次のようになります.button{ :class => "<%= 'class_name' %>" }
。
<div class="%> 'class_name' <%= button"></div>
この問題は、Hamlが構文( )のclass
要素を属性ハッシュ()のクラスエントリの内容と組み合わせるときに発生します。Hamlは後者をスペースで区切られたリストとして扱い、要素を追加してから、結果の配列を並べ替えて、表示される出力を生成します。(このようにリストをスペースで区切られたリストとして扱うことは、「純粋な」HTMLには意味がありますが、javascriptフレームワークがこのように使用すると機能しなくなります。並べ替えの理由は、Hamlのテストスイートのクラスエントリの一貫した順序を提供するためです。).
button
<%= 'class_name' %>
button
回避策は、.
構文と:class
属性ハッシュのエントリを一緒に使用しないことです。class
エントリを使用するだけです。
%div{ :class => "button <%= 'class_name' %>" }
生成:
<div class="button <%= 'class_name' %>"></div>
(すでに発見した)別の回避策は、アンダースコアテンプレートからスペースを削除することです。これにより、Hamlはそれを単一のエンティティとして扱い、分割しません。