2009-08-06 7 views
1

私はこのコードRubyとRails:ビュー内のステートメント修飾子?

<% if approved %> 
    <td>Flow Number</td> 
<% end %> 

を持っていると私は、文修飾子を使用して、それを短くしたいと思います。もちろん使用できます。

<%="<td>Flow Number</td>" if approved -%> 

ここでは短い方法がありますか?私も引用符からマークアップを取得したいと思います。

答えて

4

あなたのルビー・ブロックのうち、HTMLを保ち、実際には短いものではなく、より魅力的とすることができる、「content_tag」を使用することができます

<%= content_tag :td, "Flow Number" if approved %> 

そうでない場合、あなたはヘルパーを書いて検討することもでき - そのページ全体(または複数のページ)で同様のロジックを再利用する必要がある場合は、魅力的かもしれません。

+0

ありがとう、Neil。もっと多くのオプションが私が探しているものです。私はもう少しcontent_tagを調べなければならないでしょう。私たちはそれを使用してページからテンプレートにコンテンツを挿入しますが、ここには挿入しません。いいかもしれない。 –

+0

おっと、私はcontent_forを使用することを意味しました。私はcontent_tagについて知りませんでした。 –

2

HAML

- if approved? 
    %td Flow Number 

ない私が知った後、あなたがしている正確に何:だろう

+0

私はそれがジャンクだと判断したとしても、常に新しいものに興味があります。私はそれをチェックします、ありがとう。 –

0

ええ、私は内部的にcontent_tagを使用するヘルパーメソッドが最短の方法だと思います。 ヘルパーメソッドを使用して、あなたもこのような所望の出力を得られる可能性:

# in view helper 
def show_if(condition, wrapper_tag) 
    condition ? content_tag(wrapper_tag, yield) : '' 
end 

# in view 
<%= show_if(approved, :td) {'Flow Number'} %> 

または

# in view helper 
def show_if(condition) 
    condition ? yield : '' 
end 

# in view 
<% show_if(approved) do %> 
    <td>Flow Number</td> 
<% end %> 

私はベースのブロック全体を表示または非表示にする素敵な汎用的な方法については、この最後の方法が好き一つの条件。希望が助けてくれる!