2014-02-17 2 views
0

왜이 오류 메시지가 나타 납니까? 각 동영상의 계정 이름이 표시되도록하려고합니다. 사용자와 계정은 자체적으로 완벽하게 작동합니다. .account_name을 포함하지 않으면 다음과 같은 추악한 저장소 코드가 생깁니다. # 개체 내의 개체 필드에 액세스하는 방법에 대해 혼란스러워합니다. 영화 # 지수Ruby에서 객체 필드 호출에 대해 혼동했습니다

NoMethodError 전무에 대한 정의되지 않은 메서드`계정 이름 'NilClass

<% @videos.each do |video|%> 
    <tr> 
     <td><%= video.file %></td> 
     **<td><%= video.user.account_name %></td>** 
     <td><%= video.name %></td> 
    </tr> 
<% end %> 

답변

1

은 분명히 어떤 UserVideo있다.

변경이이에

<td><%= video.user.account_name %></td> 

:

<td><%= video.user.try(:account_name) %></td> 
+1

'Object # try '는 약간의 반 패턴입니다. 일반적으로 객체가 왜 무효인지 파악하고 논리를 사용하여 해당 케이스를 구체적으로 처리하는 것이 좋습니다. –

1

당신이 당신의 관계는 당신의 모델 사이에 설정되어 있는지 확인합니다.

응용 프로그램/모델/user.rb :

class User < ActiveRecord::Base 
    has_many :videos 
end 

응용 프로그램/모델/video.rb는 :

$ rails console 
> v = Video.first 
> v.user.account_name 
> u = User.first 
> u.videos 
:

class Video < ActiveRecord::Base 
    belongs_to :user 
end 

이 당신이 좋아하는 일을 할 수 있습니다

관련 문제