如果数据不可用,我试图限制显示的信息。
在我的view.rb文件中,我有类似的东西
<% if @content != nil %>
<div>
<h3>....</h3>
<% @content[0..3].each do |something| %>
<li> .... <li>
<% end %>
<% @content[4..5].each do |something| %>
<li> .... <li>
<% end %>
<% @content[5..11].each do |something| %>
<li> .... <li>
<% end %>
<div>
<% end %>
即使内容为零也是如此,像内容一样[4..5]。每个人都做|某事由于显而易见的原因正在运行并抛出错误。
如果不符合条件,如何让多个html和ruby代码块被忽略?
答案 0 :(得分:1)
如果代码<% content[4..5].each do |something| %>
被执行,那么 @content 不是零,那么ruby就没有办法出错。
但是,如果它类似于空数组或空字符串,那么它将通过测试。为了涵盖各种可能的“无类似”值(零,空,空白......),请使用:
<% unless @content.blank? %>
让我知道它是否有帮助。
答案 1 :(得分:0)
你可以使用:
<% unless @content.nil? %>
#true
<%else%>
#false
<%end%>
答案 2 :(得分:0)
你确定@content肯定是零吗?请注意,对象可以为空,但不是零。
例如:
@content = []
或
@content = {}
将对@content!= nil保持为true,因为它实际上不是nil。如果之前从未实例化,则引用为nil。
如果您通过Modelname,All等数据库查询将数据存储到@content,那么您将获得一个空数组而不是null(nil)对象。
此外,如果您从用户接收@content作为请求参数,那么如果GET请求包含参数的名称但不包含任何值,则@content再次为空但不是nil。
即http://yourdomain.com/somecontroller/index?name=10&age= 将params [:age]视为空的零。
解决方案:
<% if @content.to_s.empty? != true %>
<div>
<h3>....</h3>
<% content[0..3].each do |something| %>
<li> .... <li>
<% end %>
<% content[4..5].each do |something| %>
<li> .... <li>
<% end %>
<% content[5..11].each do |something| %>
<li> .... <li>
<% end %>
<div>
<% end %>