在错误输出之前,如何检查nilClass的未定义方法?

时间:2010-10-06 05:06:19

标签: ruby null

我目前正在使用以下内容:

20:         <p>Status: <%= @contact.try(:status) unless @contact.nil? || @contac
t.status.nil?%></p>

但是,我仍然会收到以下错误:

ActionView::TemplateError (undefined method `status' for nil:NilClass) on line #
20 of app/views/contacts/show.html.erb:

有更好的方法可以检查吗?

这似乎是一个常见的问题 - 它在开发中运行良好,但我没有在生产中找到它....

5 个答案:

答案 0 :(得分:8)

使用Rails实用程序方法try

<%= @contact.try(:status) %>

答案 1 :(得分:1)

也许

<%= @contact.status unless @contact %>

<%= @contact && @contact.status %>

答案 2 :(得分:0)

<%= @contact.status unless @contact.nil? || @contact.status.nil? %>

答案 3 :(得分:0)

试试这个

<%= @contact.status unless @contact.status.nil? unless @contact.nil? %>

答案 4 :(得分:-1)

为什么不更改getStatus方法或添加清除联系人对象中数据的getStatusUI方法?这样你就可以删除html中的一些混乱。