Yuv*_*rmi 12 ruby ruby-on-rails
我想只在设置了一个名为@foo的对象时显示一行文本.在我看来,我正在尝试这样的事情:
<% if !@foo.new_record? || !@foo.nil? %>
Foo is not a new record or nil
<% end %>
Run Code Online (Sandbox Code Playgroud)
但这失败了,返回You have a nil object when you didn't expect it!
我很确定这是因为该new_record?方法而发生的.如何在不导致错误的情况下检查某些内容是否为新记录或为零?在PHP中,它可以通过询问来实现,if(!empty($foo))但即使是empty?rails中的方法也会导致返回相同的错误.
有任何想法吗?
Mat*_*chu 14
怎么样:
<% if !@foo.nil? && !@foo.new_record? %>
Hello!
<% end %>
Run Code Online (Sandbox Code Playgroud)
首先,你需要在这里使用AND逻辑而不是OR逻辑,因为任何 ActiveRecord对象至少满足一个"not nil"或"not a new record"的要求.
其次,首先检查nil可确保在第一次检查失败时不运行第二次检查.抛出错误是因为您无法#new_record?在不支持它的对象上使用,因此首先检查nil可确保该方法永远不会在nil上运行.
| 归档时间: |
|
| 查看次数: |
11707 次 |
| 最近记录: |