2013-04-26 31 views
0

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

我已经搞砸了许多不同的组合,看不到它的工作。

错误:

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 

回答

3

的问题是,当你可以拨打ticket.user t可能是零,所以你不能打电话给它。你有正确的想法在你的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的做法)。

+0

总体意义。这工作,非常感谢! – Devin 2013-04-26 18:46:46

+0

非常欢迎! – MrDanA 2013-04-26 18:49:52