ruby-on-rails - 如何检查 Ruby View 中的对象是否为 nil?

标签 ruby-on-rails ruby

我只想在设置了名为@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/

相关文章:

ruby-on-rails - Rails 销毁操作不会删除

ruby-on-rails - 覆盖 Rails 4 和 SQLite 中的主键列

ruby-on-rails - 使用 postgres 让 webrick 服务器在端口 80 上运行

sql - 交叉检查用户列表和数据库上的用户 - 坏主意?

ruby-on-rails - 未定义的方法 'each' Ruby on Rails

ruby - 使用 Mechanize 和 Ruby 在特定 Div 下检索图像

ruby-on-rails - Rails 应用程序中的 Cookie 溢出?

ruby-on-rails - rails gem 'countries' - LoadError : cannot load such file -- iso3166

ruby - 转换 HTML 文档中的 URL?

ruby - 在方法中访问局部变量