Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails 4 collection_check_boxes, with a has_many through

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
like image 607
JacobJuul Avatar asked Jul 30 '14 22:07

JacobJuul


1 Answers

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

like image 191
jparonson Avatar answered Nov 07 '22 14:11

jparonson