我有两个模型:患者和提供者通过表格图表加入。
我使用了关联“has_many:through”[而不是“has_and_belongs_to_many”],因为我需要在Chart表中有另一列[called patient_mrn]
我要做的是展示给定的患者及其所有相关的提供者[每个提供者的姓名和具体的患者_mrn]。
我通过抓取包含给定patient_ID的所有图表来实现此目的。然后我可以使用
轻松地显示每个图表中的patient_mrn<%= chart.patient_mrn %>
但是,当我尝试通过图表到达提供者模型以使用
获取提供者名称时<%= chart.provider.provider_name %>
我得到一个'未定义的方法`provider_name'用于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)
在我对患者的展示视图中,我有:
<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 :(得分:0)
这是因为您chart.provider
为nil
。
在charts
表格中,您可能会有null provider_id
或
在providers
表格中,provider_id
表格中没有charts
的记录(ID)
<强>尝试:强>
<td><%= chart.provider.try(:provider_name) %></td>