Rails Style Div Conditional

时间:2013-08-14 15:29:39

标签: ruby-on-rails

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> 

感谢任何帮助

4 个答案:

答案 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...