我只想在设置了名为@foo 的对象时显示一行文本。 在我看来,我正在尝试这样的事情:
<% if !@foo.new_record? || !@foo.nil? %>
Foo is not a new record or nil
<% end %>
但是这失败了,返回 你有一个 nil 对象,而你没想到它!
我很确定这是因为 new_record?
方法。
如何在不导致错误的情况下检查某些内容是否不是新记录或 nil?
在 PHP 中,它可以通过询问 if(!empty($foo))
来实现,但即使是 Rails 中的 empty?
方法也会导致返回相同的错误。
有什么想法吗?
最佳答案
怎么样:
<% if !@foo.nil? && !@foo.new_record? %>
Hello!
<% end %>
首先,您需要在这里使用 AND 逻辑而不是 OR 逻辑,因为任何 ActiveRecord 对象至少满足“不是零”或“不是新记录”的要求之一。
其次,首先检查是否为 nil 可确保在第一次检查失败时不会运行第二次检查。抛出错误是因为您不能在不支持它的对象上使用 #new_record?
,因此首先检查 nil 确保该方法永远不会在 nil 上运行。
关于ruby-on-rails - 如何检查 Ruby View 中的对象是否为 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2346234/