我希望客户名称出现在我的某个模型视图页面的客户名称列中,但我似乎无法弄清楚如何执行此操作。
以下是我的协会:
客户模型是 -
class Customer < ActiveRecord::Base
has_many :appointments, :dependent => :destroy, :as => :customer
has_many :birds, :dependent => :destroy, :as => :customer
end
Bird Model是 -
class Bird < ActiveRecord::Base
belongs_to :customer
has_one :appointment
end
我还将其添加到Bird模型索引视图 -
<tbody>
<% @birds.each do |bird| %>
<tr data-link="<%= bird_path(bird) %>">
<td><%= bird.customer_id %></td>
<td><%= bird.name %></td>
<td><%= bird.breed %></td>
<td><%= bird.color %></td>
<td><%= bird.age %></td>
</tr>
<% end %>
我想要传递到鸟类索引视图页面上的客户名称列的客户参数是customer.name或:name。如果我尝试这样做,我的/ bird页面上会出现未定义的方法错误。
谢谢!
答案 0 :(得分:2)
我希望这应该有效:
<%= bird.customer.name %>
或者 - 如果您没有客户的鸟类 - 您可能希望避免这样的例外:
<%= bird.customer.try(:name) %>
或者 - 更不容易出错 - 将以下内容添加到您的鸟模型中:
delegate :name, to: :customer, allow_nil: true, prefix: true
并在您的观看中使用它:
<%= bird.customer_name %>
答案 1 :(得分:0)
您需要在视图中使用:
<%= bird.customer.name %>
答案 2 :(得分:0)
在您的控制器中,对于鸟类索引页面:
当您查询Bird.all
时,请执行Bird.all.includes(:customer)
然后您将可以访问视图中的<%= bird.customer.name %>