2013-04-29 3 views
0

두 가지 모델이 있습니다 : Patient와 Provider가 Table Chart를 통해 조인되었습니다. 내가 차트 테이블의 다른 열 [전화 patient_mrn]has_many에서 데이터에 액세스하는 방법 : 연결을 통해?

난 할 노력하고있어 것은을 보여주는 것입니다이 필요하기 때문에 [대신 "has_and_belongs_to_many"이상] :

나는 협회 "를 통해 has_many"를 사용 주어진 환자와 그와 관련된 모든 제공자 [각자의 이름과 특정 patient_mrn].

주어진 patient_ID가 포함 된 차트를 모두 가져와이를 수행합니다. 그럼 난 쉽게

<%= chart.patient_mrn %> 

를 사용하여 각 차트에서 patient_mrn을 표시 할 수 있습니다하지만 난이 공급자 모델에 차트를 통해 도달 할 때

<%= chart.provider.provider_name %> 

은 내가 '정의되지 않은 방법을 얻을 사용하여 공급자 이름을 잡기 위해 `provider_name 'for nil : NilClass'오류가 발생했습니다.

내가 뭘 잘못하고 있니? 다음 코드에서 더 많은 세부 사항은 다음과 같습니다

환자 모델이 있습니다

has_many :charts 
has_many :providers, :through => :charts 

공급자 모델이 있습니다

has_many :charts 
has_many :patients, :through => :charts 

및 차트 모델이 있습니다

belongs_to :patient 
belongs_to :provider 

을 다음 환자 컨트롤러의 쇼 동작에는 다음이 있습니다.

@patient = Patient.find(params[:id]) 
@charts = Chart.where(:patient_id => @patient.id) 

그리고 환자에 대한 내 공연보기 16,는 내가 가지고 : 당신이 nilchart.provider을 받고 있기 때문에

<h2>Listing Providers</h2> 

<table> 
    <tr> 
    <th>Patient mrn</th> 
    <th>Provider</th> 
    </tr> 

<% @charts.each do |chart| %> 
    <tr> 
    <td><%= chart.patient_mrn %></td> 
    <td><%= chart.provider.provider_name %></td> 
    </tr> 
<% end %> 
</table> 
+0

'chart.provider'가'nil'으로 설정 되었기 때문입니다. – shweta

+0

미안 Shweta, 난 n00b이고 이해가 안돼. 정교하게 제발 주시겠습니까? – user2284821

답변