0

加载包含没有记录的模型用户的视图时出现此错误。如果没有记录,我只是希望它在视图中返回“未分配”。否则,显示用户的名字和姓氏。当记录存在时,显示用户的名字和姓氏会按预期工作。

我已经弄乱了许多不同的组合,看不到让它工作。

错误:

undefined method `full_name' for nil:NilClass

ticket.index.html.erb中:

<% @tickets.each do |ticket| %>
  <%= ticket.user.full_name %>
<% end %>

ticket.rb模型中

def full_name
  if full_name.blank?
    full_name = "Unassigned"
  else
    ticket.user.first_name + ' ' + ticket.user.last_name    
  end
end
4

1 回答 1

3

问题是当你调用它时ticket.user可能是 nil,所以你不能调用任何东西。您在 Ticket 模型上创建一个方法来隔离它的想法是正确的,但它会调用自身,这将获得一个无限循环,而且您仍然在调用您的用户而不是您的票证的方法。尝试这个:

在您看来:

<% @tickets.each do |ticket| %>
  <%= ticket.full_name %>
<% end %>

在您的票证模型中:

def full_name
  if user.nil?
    return "Unassigned"
  else
    return user.full_name
  end
end

在您的用户模型中:

def full_name
  return "#{first_name} #{last_name}"
end

我让用户模型有自己的方法,因此它被进一步隔离(遵循 OO 实践)。

于 2013-04-26T18:30:19.463 回答