2013-04-26 2 views
0

레코드가없는 모델 사용자가있는 뷰를로드 할 때이 오류가 발생합니다. 레코드가 없으면 뷰에서 "Unassigned"를 반환하기 만하면됩니다. 그렇지 않으면 사용자의 성과 이름을 표시하십시오. 사용자의 성과 이름 표시는 레코드가 존재할 때 예상대로 작동합니다.레일 - 행이 nil을 반환하는 경우

나는 이것의 많은 다른 조합으로 어지럽 혀졌고 제대로 작동하지 않습니다.

오류 :

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는 0이 될 수 있으므로 아무 것도 호출 할 수 없습니다. 이것을 분리하기 위해 티켓 모델에서 메소드를 만드는 데 올바른 아이디어가 있지만, 무한 루프가 발생하는 자체를 호출하고 있으며, 여전히 티켓이 아닌 사용자의 메소드를 호출하고 있습니다. 티켓 모델에서

<% @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

+0

대단히 환영합니다! – MrDanA

관련 문제