2013-04-26 65 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