非常简单我确定......但我无法弄清楚为什么它不起作用。
<tr<% if film.viewed == true %> class="viewed"<% end %>>
film.viewed是一个布尔值,但如果它是真的,它不会渲染类。可能是语法错误。有帮助吗?还有一种更简单的方法来写这个没有打开和关闭?我尝试使用:
<tr<% if film.viewed == true puts class=\"viewed\" end %>>
再次可能是语法错误。我来自PHP,所以我还在学习。
感谢。
答案 0 :(得分:5)
你最好的选择就是以下......
<tr <%= 'class="viewed"' if film.viewed? -%>>
所有布尔ActiveRecord列都会获得一个返回true或false的问号方法。由于MySQL将布尔值存储为1/0,我通常使用问号方法只是为了安全。
答案 1 :(得分:2)
我认为这更容易阅读:
<%= content_tag(:tr, "", :class => film.viewed? ? "viewed" : nil) %>
答案 2 :(得分:0)
我猜电影。查看不是真的,而是另一个价值。
尝试一下
的效果<tr <%= "class='viewed'" if film.viewed %> >
答案 3 :(得分:0)
<tr <%= film.viewed ? 'class="viewed"' : 'class="notviewed" %> >
所以,有些注意事项。
if ... end
你需要一个“;”或end
之前的新行。film
的本地变量或参数吗?<%=
而不只是<%
才能插入模板代码的最终结果。to_s
方法,并且由于nil.to_s
返回""
,因此您可以安全地使用独立的错误{{1} } statement,具有返回if
的表达式的效果。但不知何故,表达式始终返回一个值,我愿意看到内插似乎是有意义的。答案 4 :(得分:0)
我宁愿做这样的事情。
<tr class="<%= film.viewed ? "viewed" : "" -%>"></tr>