How do I check if a variable is defined in rails?
1 2 3 | <% if dashboard_pane_counter.remainder(3) == 0 %> do something <% end> |
如果未定义dasboard_pane_counter,如何将其评估为false而不是抛出异常?
1 2 3 | <% 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 %> |
local_assigns可以用于此,因为这个问题来自几年前,我验证它存在于以前版本的rails中
1 2 3 | <% if local_assigns[:dashboard_pane_counter] && dashboard_pane_counter.remainder(3) == 0%> <% end %> |
这是在这里的笔记
http://apidock.com/rails/ActionController/Base/render
使用rails和实例变量时,nil定义了
1 2 3 | <% if @dashboard_pane_counter.try(:remainder(3)) == 0 %> #do something <% end %> |
因此,如果未定义实例变量,
为像我这样的初学者编写这个答案。这个问题可以简单地使用两个步骤(如果使用&amp;&amp;)就可以回答。这是一个更长,更不漂亮的答案,但帮助新编码员了解他们正在做什么,并使用一种非常简单的技术,这在任何其他答案中都不存在。诀窍是使用实例(@)变量,它不适用于局部变量:
1 2 3 | if @foo "bar" end |
如果定义了@foo,则返回"bar",否则返回(没有错误)。因此分两步:
1 2 3 4 5 | if @dashboard_pane_counter if @dashboard_plane_counter.remainder(3) == 0 do something end end |
另一种方式,有一个整洁的宝石,是'andand。'
https://github.com/raganwald/andand
绝缘
1 | if !var.nil? |
我会用
1 | unless var.nil? |
这是更好的红宝石代码!