过滤器有很多通过模型

时间:2018-04-06 08:07:18

标签: ruby-on-rails has-many-through

我是RoR的新手。我正在建立电子商务网站,其中我有两个型号的产品和类别如下:

Products : has_many :categories_products, dependent: :destroy
  has_many :categories, through: :categories_products


Categories:   has_many :categories_products
  has_many :products, through: :categories_products

Categories_products: belongs_to: products, belongs_to: categories

我的网站有类别的megamenu。我打算单击这些类别中的任何一个并获取属于它的所有产品。到目前为止,我只能获得category_id,因为我使用参数来获取类别。

if params[:category]
  @categoryproducts = :category.products.all.paginate(page: params[:page], per_page: 20)
else
  redirect_to root_url
end

使用上述方法

  

未定义的方法`产品' for:category:Symbol

我在网上搜索了大多数人说使用连接表。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果category_id在params中传递,您可以执行以下操作:

if params[:category_id]
  @products = Product.joins(:categories).where(
    categories: { id: params[:category_id] }
  ).all.paginate(page: params[:page], per_page: 20)
else
  redirect_to root_url
end