我在加载具有模型用户且其中没有记录的视图时出现此错误。如果没有记录,我只是希望它在视图中返回“未分配”。否则,显示用户的名字和姓氏。当记录存在时,显示用户名和姓氏按预期工作。
我已经搞砸了许多不同的组合,无法让它发挥作用。
错误:
undefined method `full_name' for nil:NilClass
在 tickets.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
答案 0 :(得分:3)
问题是当你致电ticket.user
时可能是零,所以你不能打电话给它。你有一个正确的想法,在你的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实践)。