如何将表格列数据从一个模型中获取到另一个模型的视图中?

时间:2015-08-06 05:35:40

标签: ruby-on-rails ruby rails-activerecord

我希望客户名称出现在我的某个模型视图页面的客户名称列中,但我似乎无法弄清楚如何执行此操作。

以下是我的协会:

客户模型是 -

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页面上会出现未定义的方法错误。

谢谢!

3 个答案:

答案 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 %>