我需要生成类似产品的自定义引擎 分类在品牌和类别:
产品:
-----产品1 /品牌1 /
中的同一产品-----产品2
- 第2类
- 第3类
品牌:
-----产品1 /同类产品1 /
-----产品2
品牌2
品牌3
上述最佳方案是什么?
我做了以下工作来满足我的需求:
1-生成一个名为category
的新引擎$ 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-生成第三个引擎,称为产品,并在内部进行处理 品类和品牌引擎:
$ 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-我在/ vendor / engines / categories /中编辑了以下文件 应用程序/型号:
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-当我点击类别时,它只列出没有显示的类别 里面的产品....同样适用于品牌。那我该怎么办? 列出与类别和品牌相关的产品 在他们每个人的内心..
提前感谢您的支持人员......感谢您的帮助。
答案 0 :(得分:4)
创建单独的类别和品牌模型对我来说没有多大意义。我宁愿将它们作为产品表中的字段并编写帮助以获取所有独特的类别和品牌。 例如:
def get_categories
Product.pluck(:category).uniq
end
按类别过滤产品:(这会替换_form.html.erb中类别的选择标记)
options_for_select(get_categories)
要选择属于同一类别的产品,您可以执行以下操作:
@products = Product.where("category=?",params[:category])