在视图中调用关联模型的属性

时间:2013-07-29 19:03:07

标签: ruby-on-rails associations

我有三个相关模型:Vendor,Item,InventoryItem。我很难理解如何利用关联来返回相关属性。

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:

class SearchResultsController&lt; ApplicationController中

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

    @items = @search.results
   end
end

我在RoR很新,所以欢迎任何意见。提前谢谢!

修改

以下是给定Item.first.vendors

时从rails控制台返回的内容
  

项目加载(0.7ms)SELECT“items”。* FROM“items”LIMIT 1     供应商负载(0.9ms)SELECT“vendor”。* FROM“vendors”INNER JOIN“inventory_items”ON“vendors”。“id”=“inventory_items”。“vendor_id”WHERE“inventory_items”。“item_id”= 1    =&GT; []

解决方案编辑 我的模型关联中存在一些基本错误,这些错误不允许我利用这些关系。我通过删除重复字段来清理这些关联(在这种情况下:item_id和:product_code),下面的答案工作得很好。

1 个答案:

答案 0 :(得分:2)

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

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

使用:

<% item.vendors.each do |vendor| %>
 <%= vendor.name %><br/> 
<% end %>