Rails has_and_belongs_to_many在2级关联

时间:2016-10-31 09:05:21

标签: ruby-on-rails associations

这与先前询问的question

有关

我在产品和供应商之间有一个has_and_belongs_to_many。

在我看来,我使用:

<td><%= product.suppliers.map {|supplier| supplier.NAME }.join(', ') %></td>

显示表格中每个产品的每一行分隔的供应商逗号列表。

我现在需要在发票索引视图上显示相同的列表。发票表有一列PRODUCT。我已经在Invoice模型上设置了belongs_to:product。

我尝试了我的发票索引视图:

<td><%= invoice.product.suppliers.map {|supplier| product.supplier.NAME }.join(', ') %></td>

但它返回

  

错误未定义的局部变量或方法`product'

为什么不工作?我该如何解决?提前谢谢。

1 个答案:

答案 0 :(得分:3)

您构建了错误的.map,请尝试

invoice.product.suppliers.pluck(:NAME).join(', ')

顺便说一句

在视图中使用逻辑是不好的做法,你应该将你的逻辑移到模型中,并在视图中使用类似的东西:

<%= invoice.suppliers_names %>

应该返回# => 'Name_1, Name_2, etc'