在视图中显示来自另一个模型的值
Displaying values from another model in view
我是新手,我确定有一个简单的问题。我有 2 个模型,客户(有很多工作)和工作(属于客户)。我有一个显示作业详细信息的视图。我想 select 来自客户的数据,但出现错误。
作业控制器中的索引操作:
@jobs = Job.all
(NB也试过了@jobs = Job.includes(:customer).all
)
在我看来:
<% @jobs.each do |job| %>
...
<td><% job.customer.surname %></td>`
但我收到以下错误:
undefined method `surname' for nil:NilClass
请问我做错了什么?
虽然 Job
属于 Customer
,但给定的 job.customer
可能是 nil
!
首先,您可以在您的视图中查看:
<% jobs.each do |job| %>
<% if job.customer.blank? %>
<!-- debugging info: -->
<p>Oops, this Job doesn't have a customer</p>
<p>customer_id is <%= job.customer_id.inspect %>)</p>
<% else %>
<p><%= job.customer.surname %></p>
<% end %>
<% end %>
如果发现某些 Job
没有 Customer
,则应用程序的另一部分可能有问题。可能性很小:
jobs#create
没有将客户分配给作业。
要防止出现这种情况,请编辑 Job
并添加 validates :customer, presence: true
。
job.customer_id
可能包含无效的外键(即 job.customer_id
存在,但没有 Customer
其 id
是 job.customer_id
).
为了防止这种情况,在 Customer
中添加 has_many :jobs, dependent: :destroy
确保在销毁客户时销毁所有作业。
我是新手,我确定有一个简单的问题。我有 2 个模型,客户(有很多工作)和工作(属于客户)。我有一个显示作业详细信息的视图。我想 select 来自客户的数据,但出现错误。
作业控制器中的索引操作:
@jobs = Job.all
(NB也试过了@jobs = Job.includes(:customer).all
)
在我看来:
<% @jobs.each do |job| %>
...
<td><% job.customer.surname %></td>`
但我收到以下错误:
undefined method `surname' for nil:NilClass
请问我做错了什么?
虽然 Job
属于 Customer
,但给定的 job.customer
可能是 nil
!
首先,您可以在您的视图中查看:
<% jobs.each do |job| %>
<% if job.customer.blank? %>
<!-- debugging info: -->
<p>Oops, this Job doesn't have a customer</p>
<p>customer_id is <%= job.customer_id.inspect %>)</p>
<% else %>
<p><%= job.customer.surname %></p>
<% end %>
<% end %>
如果发现某些 Job
没有 Customer
,则应用程序的另一部分可能有问题。可能性很小:
jobs#create
没有将客户分配给作业。要防止出现这种情况,请编辑
Job
并添加validates :customer, presence: true
。job.customer_id
可能包含无效的外键(即job.customer_id
存在,但没有Customer
其id
是job.customer_id
).为了防止这种情况,在
Customer
中添加has_many :jobs, dependent: :destroy
确保在销毁客户时销毁所有作业。