-1

对于我的应用程序,我需要找到产品的类别。但是不知道怎么找。类别有许多子类别。子类别有很多产品。SubCategory 和 product 通过 product_sub_category 关联。有没有办法知道产品的类别?帮助!

Category model is:
  has_many :sub_categories
  accepts_nested_attributes_for :sub_categories, :allow_destroy => true
  has_many :products, :through => :sub_categories

Sub-category model:
  attr_accessible :category_id, :description, :sub_category, :sub_category_url
  belongs_to :category
  has_many :product_sub_categories
  has_many :products, :through => :product_sub_categories
  has_one :photo, :as => :attachable, :dependent => :destroy  
  accepts_nested_attributes_for :photo, :allow_destroy => true

ProductSubCategory
  belongs_to :product
  belongs_to :sub_category
  belongs_to :category
  attr_accessible :sub_category_id
  before_save :assign_category_id

Product
  belongs_to :user
  has_many   :product_sub_categories
  has_many   :sub_categories, :through => :product_sub_categories
  has_many   :categories, :through => :sub_categories 
  accepts_nested_attributes_for :photos, :allow_destroy => true
  accepts_nested_attributes_for :product_sub_categories

我正在显示产品页面并希望显示其类别。这该怎么做?如果我需要提供任何其他信息,请告诉我。

4

3 回答 3

0

在您的控制器中

@products = Product.all

在你看来

@products.each do |product|    
  product_category = product.sub_category.category
end

通过这样做,您可以获得产品的类别对象

于 2013-01-28T10:32:21.903 回答
0

我假设您只需要在显示产品信息(显示操作)时获取产品所属的类别,而不是子类别。

在你的控制器中

def show
  @product = Product.includes(:categories).find(params[:id])
end

在你看来(show.html.erb)

<% @product.categories.each do |category| %>
  <span><%= category.name %></span>
<% end %>

希望它会有所帮助。我还没有测试过。

于 2013-01-28T10:41:30.653 回答
0

product.category将为您提供产品类别的 ID。product.categroy.name将为您提供产品类别的名称。您可以在视图中使用它。

注意:如果它们之间有 has_many 和 belongs_to 关系。谢谢享受!

于 2017-09-07T23:00:38.593 回答