<% if dashboard_pane_counter.remainder(3) == 0 %>
do something
<% end>
如果未定义dasboard_pane_counter,我怎样才能将其评估为false而不是抛出异常?
答案 0 :(得分:48)
<% if defined?(:dashboard_pane_counter) && dashboard_pane_counter.remainder(3) == 0 %>
# do_something here, this assumes that dashboard_pane_counter is defined, but not nil
<% end %>
答案 1 :(得分:5)
使用rails和实例变量时,nil定义了try
方法,因此您可以这样做:
<% if @dashboard_pane_counter.try(:remainder(3)) == 0 %>
#do something
<% end %>
因此,如果未定义实例变量,try(:anything)
将返回nil,因此评估为false。 nil == 0
是假的
答案 2 :(得分:3)
local_assigns可用于此,因为这个问题来自几年前,我验证它存在于以前版本的rails中
<% if local_assigns[:dashboard_pane_counter]
&& dashboard_pane_counter.remainder(3) == 0%>
<% end %>
这是在这里的笔记
答案 3 :(得分:0)
将此答案发布给像我这样的初学者。只需使用两个步骤即可回答此问题(如果使用&&,则可以回答一个步骤)。这是一个较长且不太漂亮的答案,但可以帮助新的编码人员理解他们在做什么,并使用一种非常简单的技术来解决其他问题。诀窍是使用实例(@)变量,它将不适用于局部变量:
if @foo
"bar"
end
如果定义了@foo,它将返回“ bar”,否则将返回(没有错误)。因此分两个步骤:
if @dashboard_pane_counter
if @dashboard_plane_counter.remainder(3) == 0
do something
end
end
答案 4 :(得分:-1)
另一种方式,有一个整洁的宝石,是'andand。'
答案 5 :(得分:-3)
而不是
if !var.nil?
我会用
unless var.nil?
这是更好的红宝石代码!