2011-12-12 94 views
2

我需要生成像这 在品牌归类的产品和类别的自定义引擎:定制产品引擎

产品:

  • 1类

-----产品1 /同一品牌的品牌1/

-----产品2

- 2

- 3

品牌:

  • 品牌1

-----产品1 /同一产品中的类别1/

-----产品2

  • 品牌2

  • 品牌3

什么是上述的最佳方案。

我做了以下实现我的需求:

1生成一个名为类别

$ rails generate refinery_engine category name:string image:image 
$ bundle install 
$ rails generate refinerycms_categories 

2-生成另一个引擎所谓的品牌

$ rails generate refinery_engine brand name:string image:image 
$ bundle install 
$ rails generate refinerycms_brands 
$ rake db:migrate 

3-产生的新引擎第三款发动机被称为产品和genreated里面 类别和品牌引擎:

$ rails generate refinery_engine product category:engine brand:engine 
name:string category_id:integer brand_id:integer number:string 
quantity:integer brief:string description:text image:image 
catalog:resource 
$ bundle install 
$ rails generate refinerycms_categories products 
$ rake db:migrate 

4-我已经编辑下列文件中/供应商/发动机/分类/ 应用/型号:

category.rb

has_many :products 

product.rb

belongs_to :category 
belongs_to :brand 

5-我也编辑过/vendor/engines/brands/app/models/brand.rb:

has_many :products 

6-我编辑了_form.html。ERB:CATEGORY_ID和:brand_id作出 HTML标签:

<div class='field'> 
<%= f.label :category_id -%> 
<%= collection_select(:product, :category_id, Category.all, :id, :name) %> 
</div> 

<div class='field'> 
<%= f.label :brand_id -%> 
<%= collection_select(:product, :brand_id, Brand.all, :id, :name)%> 
</div> 

7在前端产品部分我看到所有的产品,当我在一个产品类别和品牌点击 都出现了id,而不是名称。我需要 来显示名称而不是ID。

8-当我点击类别时,它仅列出类别,而不显示 其中的产品....同样适用于品牌。所以我如何 列出与其中每个类别和品牌 相关联的产品..

谢谢您的支持家伙...我感谢您的帮助。

回答

4

创建一个单独的类别和品牌模型对我来说没有多大意义。我宁愿将它们作为产品表中的字段,并写一个帮手来获取所有独特的类别和品牌。 如:

def get_categories 
    Product.pluck(:category).uniq 
end 

要通过类别过滤器产品:(这将替换选择标记为您_form.html.erb类别)

要选择属于同一类别的产品,您可以这样做:

@products = Product.where("category=?",params[:category])