2011-01-19 12 views
0

かなり単純ですが...私はそれがうまくいかない理由を理解できません。シンプルなレール条件文

<tr<% if film.viewed == true %> class="viewed"<% end %>> 

film.viewedはブール値ですが、trueの場合はそのクラスを表示しません。おそらく構文エラーです。どんな助け?これを開いたり閉じたりせずに書く方が簡単ですか?私は使用しようとしました:

<tr<% if film.viewed == true puts class=\"viewed\" end %>> 

また、おそらく構文エラーです。私はまだPHPから来ているので、私はまだ学んでいます。

ありがとうございました。

+0

"おそらく構文エラー"ですか?エラーメッセージが表示されているかどうかまた、条件の '== true'部分は余分です。 – ryeguy

答えて

5

の効果に何かをしてみてくださいまたはfalse。 MySQLはブール値を1/0として保存するので、通常は疑問符法を使用して安全です。

+0

これはRails 3.1の新機能かもしれませんが(確かに私はnewbです)、上記は正しく動作しません。私はテンプレートの一重引用符で二重引用符を入れようとしましたが、Railsはそれらをhtmlエンティティ(")に変換します。したがって、ソースコードは次のようになります。 '' film.viewedならば、上記のコードを '

0

私はfilm.viewedが本当ではないと推測していますが、別の値です。

はあなたの最善の策は、すべてのブールActiveRecordの列が真を返します疑問符方法を取得するには、次の...

<tr <%= 'class="viewed"' if film.viewed? -%>> 

ようなものになるだろう

<tr <%= "class='viewed'" if film.viewed %> > 
0
<tr <%= film.viewed ? 'class="viewed"' : 'class="notviewed" %> > 

です。

  • if ... endを行うには、「;」が必要です。または改行をendの前に入力します。
  • filmというローカル変数またはパラメータが実際にありますか。
  • テンプレートコードの最終結果を補間するには、<%だけでなく、<%=が必要です。
  • 私はERBテンプレートドライバはそれを取得どんな結果にto_sメソッドを呼び出し、nil.to_s戻り""以来、あなたはnilを返すの表現として効果があり、スタンドアローン偽if文と安全である想像してみてください。しかし、どういうわけか、式を常に持っていれば、補間されていることを知りたいと思う値が得られるはずです。
+0

または少なくとも私のお気に入りのキーワード、 '' – EnabrenTane

2

私はこれが読みeaserであると思う:

<%= content_tag(:tr, "", :class => film.viewed? ? "viewed" : nil) %> 
0

私はむしろこのような何かをするだろう。

<tr class="<%= film.viewed ? "viewed" : "" -%>"></tr>