0

我有三个相关模型:供应商、项目、库存项目。我很难理解如何利用关联来返回关联的属性。

class Item < ActiveRecord::Base
has_many    :inventory_items
has_many    :vendors, through: :inventory_items
accepts_nested_attributes_for :inventory_items, :vendors

class InventoryItem < ActiveRecord::Base
belongs_to  :item
belongs_to  :vendor

class Vendor < ActiveRecord::Base
has_many    :inventory_items
has_many    :items, through: :inventory_items

我正在尝试退回出售商品的供应商以及他们出售商品的价格。这是我的 SearchResults 索引视图:

<table>  
<tr class="search-table">  
  <td>Product</td>
  <td>Details</td>
  <td>Brand</td>
  <td>Code</td>
  <td>Vendors</td>
  <td>Price</td>

</tr>

<% @items.each do |item| %>

 <tr class="search-table"> 
  <td><%= item.product %></td>
   <td><%= item.details %></td>
   <td><%= item.brand %></td>
   <td><%= item.code %></td>
   <td><%= #how to return vendors? %></td>
   <td><%= #how to return price? %></td>
 </tr>
<% end %>
</table>

这是我的 SearchResultsController:

类 SearchResultsController < ApplicationController

def index
    @search = Item.solr_search do
        fulltext params[:search]
        end

    @items = @search.results
   end
end

我是 RoR 的新手,所以欢迎任何意见。提前致谢!

编辑

这是给定 Item.first.vendors 时从 rails 控制台返回的内容

项目加载(0.7 毫秒)选择“项目”。*从“项目”限制 1 供应商加载(0.9 毫秒)选择“供应商”。*从“供应商”内部连接“库存项目”在“供应商”。“id”=“库存项目” "."vendor_id" WHERE "inventory_items"."item_id" = 1 => []

解决方案编辑 我的模型关联中有一些基本错误,不允许我利用这些关系。我通过删除重复字段(在本例中为:item_id 和:product_code)清理了这些关联,并且下面的答案非常有效。

4

1 回答 1

2

为了列出特定项目的供应商,只需替换:

<td><%= #how to return vendors? %></td>

和 :

<% item.vendors.each do |vendor| %>
 <%= vendor.name %><br/> 
<% end %>
于 2013-07-29T19:15:10.350 回答