Rails 4 collection_check_boxes, with a has_many through
Asked Answered
N

1

6

I'm trying to associate categories to products. The way I've implemented it so far is

Class Product
    has_many :categorizations
    has_many :categories, through: :categorizations

.

Class Categorization
    belongs_to :product
    belongs_to :category

.

Class Category
    has_many :categorizations
    has_many :products, through: :categorizations

and in my products/_form.html.erb

<div class="field">
<%= f.label :category_id %><br />
<%= collection_check_boxes(:product, :category_id, Category.all, :id, :name) %>
</div>

I'm not sure how to do this properly.

Solution
Change : :category_id to :category_ids and set the strong params

def product_params
  params.require(:product).permit(:title, :description, :price, :category_ids => [])
end
Nigger answered 30/7, 2014 at 22:50 Comment(0)
A
7

Being that the relationship is many-to-many a given product should respond to category_ids (plural), not category_id (singular).

Alexia answered 30/7, 2014 at 22:55 Comment(1)
Thank you, this worked. I also had to set def product_params params.require(:product).permit(:title, :description, :image_url, :price, :category_ids => []) endNigger

© 2022 - 2024 — McMap. All rights reserved.