【发布时间】:2013-04-22 16:09:42
【问题描述】:
我有两个模型:通过表格图表连接的患者和提供者。
我使用了关联“has_many :through”[而不是“has_and_belongs_to_many”],因为我需要在 Chart 表中有另一列 [称为 patient_mrn]
我要做的是向给定的患者及其所有相关的提供者显示 [每个都有其名称和特定的患者_mrn]。
我通过抓取包含给定患者 ID 的所有图表来做到这一点。然后我可以使用
轻松显示每个图表中的 patient_mrn<%= chart.patient_mrn %>
但是当我尝试通过图表到达提供者模型以使用
获取提供者名称时<%= chart.provider.provider_name %>
我收到一个“未定义的方法 `provider_name' for nil:NilClass”错误。
我在这里做错了什么?以下是代码中的更多详细信息:
患者模型具有:
has_many :charts
has_many :providers, :through => :charts
Provider 模型有:
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>
【问题讨论】:
-
这是因为您将
chart.provider设为nil。 -
对不起Shweta,我是n00b,不懂。能详细点吗?
标签: ruby ruby-on-rails-3.2 has-many-through