2013-03-06 15 views
87

他の開発者を助けるために、SOに関する似たような質問はありません。同じアプローチは、他の属性に動的な値を割り当てるために使用することができるスリムダイナミック条件付きクラス

div class=(is_active? ? 'active' : 'inactive') 
div class=('active' if is_active?) 

div class=(is_active? ? 'active' : 'inactive') 
div class=('active' if is_active?) 

答えて

116

は、以下の例を参照してください。あなたが複数の条件を持っている場合、私はis_bar場合、それは傷であることを感じるものの

+2

複数の条件ではどうしますか? –

+0

あなたの答えのコメントの下を参照してください。 –

+0

これは、次のようなクラスを追加することもできます: 'div.councilor class =(councilor.retired??" retired ":" ")'生成: 'div.councilor.retired' –

11

は、私が今

div class=(('foo ' if is_foo?) + ('bar' if is_bar?)) 

ような何かをやっていますか? (傷がfoo後に空白文字である)

<div class="foo "></div> 

に虚偽と生成されたHTML結果を返します。誰かがそれについての解決策を持っていたら素晴らしいだろう。

+6

この場合は' String#rstrip'を試してください2つの条件: 'div class =(( '' 'foo'ならばis_foo?)+( 'bar'ならばis_bar?))。 または、いくつかの条件では 'div class =([( 'is' foo 'ならば' is 'foo')、(is_barならば 'bar')} compact.join( ''))' –

17

クラスにnil要素の配列を使用する必要がない場合は、nil要素を削除するためにコンパクトな配列を作成し、最後にすべてを一緒に結合します。

div class=(["cday", "col-md-1", day.day == 1 ? "col-md-offset-#{day.cwday-1}" : nil].compact.join(' '))