Rails 3.1如果变量为nil
,尝试将div上的显示值设置为无我在我的观点中尝试了以下内容:
<tr class = "level3" <%= attributes["style"] = "display: none" if product.volume3.nil? %>>
<td><%=product.volume3%></td>
<td><%= number_to_currency (product.price3)%></td>
感谢任何帮助
答案 0 :(得分:2)
将您知道的内容称为HTML,而不是字符串。你写它的方式返回一个HTML不安全的字符串。既然您知道要呈现HTML,请将其置于条件之间并将其呈现为原始HTML:
<tr class="level3" <% if product.volume3.nil? %>style="display:none;"<% end %>>
<td><%=product.volume3%></td>
<td><%= number_to_currency (product.price3)%></td>
</tr>
答案 1 :(得分:1)
添加到MrYoshiji评论中已经显示的内容,如果它没有任何价值,则无需生成style
属性。尝试:
<tr class = "level3"<%= " style='display: none';" if product.volume3.nil? %>>
答案 2 :(得分:0)
如果volume3为零,如果没有理由显示它,你可能只想这样做:
<% unless product.volume.nil? %>
<tr class="level3">
# etc etc.
<% end %>
答案 3 :(得分:0)
就个人而言,我会编写一个帮助器,并将content_tag_for
与CSS类一起使用。
= content_tag_for :tr, product, class: "#{'hidden' if product.volume3.nil?}" do
# rest of code
CSS:
.hidden { display: none; }
如果你想获得幻想,请添加帮助:
def class_for(product)
'hidden' unless product.volume3.present?
end
= content_tag_for :tr, product, class: class_for(product) do
Rails已经有了解决这些问题的工具,我不建议在有条件的情况下乱丢你的观点。
最后,正如其他人所评论的那样,如果需要,您只应呈现<tr>
。
= if product.volume3.nil?
<tr> etc...