2012-05-21 8 views
6

要素の属性の中にいくつかのハンドルバーブロックヘルパーを使用する必要があります。どうすれば入手できますかハンドルバーブロックヘルパーがHAMLにねじ込まれた

.some.class{:class => "{{if property}} otherClass {{/if}}"} 

正しく解析するには?ここにあるとしてコンパイル出力されます:私は単一引用符をしよう、との間隔を調整し、すべての非単語の文字をエスケープしようとした

<div class='class otherClass property}} some {{/if}} {{if'></div> 

は、何もそれを修正するようです。私は:plainキーワードを使用するよりも洗練されたソリューションを探したいと思っています。

+3

申し訳ありません(または明らかに私は別の6時間することはできません)、私は実際にここに機能するソリューションを見つけました。 hamlが属性からのクラスを "ドットチェーン"のクラスと組み合わせる方法に問題があるようです。これに変更するとうまくいくようです。 – user1408632

+1

あなたの答えを回答として投稿すると、私はそれを答えとして投票します。そのトリックは完全に機能しました!ありがとう。 – poweratom

答えて

1

ハムがそれを受け入れるには、{{}}の前に文字を追加する必要があることがわかりました。例:

%div.some.class{:class => "a{{foo}}"} 

わかりませんが、私の目的はスイートです。

0

実際、このトリックは、やや複雑なハンドルバーの表現では機能しません。

最後に、私はhamlで文字列リテラルを使用してこれを解決しました。したがって、質問に示されている例の場合です。以下のhamlが必要です。最後の行であるタグを閉じることを忘れないでください。

\ <div class='class {{if property}} otherClass {{/if}} some '> 
-# Normal haml goes here and must not start at the same indent as the above literal 
\ </div> 
0

移動代わりクラス簡略ドット表記とクラス属性の両方を使用してのクラス属性へのすべてのクラス。

.col-md-12.card{ class: "{{toLowerCase level_name}}-master-card" } 

はなり

%div{ class: "col-md-12 card {{toLowerCase level_name}}-master-card" } 

HAML自分の質問に答えるための4.0.7

関連する問題