I'm trying to achieve something that I assume is fairly common?
I have a Category table and a Brand Table. When I create a new Category I want a list of checkboxes to appear, and when checked they update the category_brand table.
Here are the models. class Category < ActiveRecord::Base has_and_belongs_to_many :brands end class Brand < ActiveRecord::Base has_and_belongs_to_many :categories end
Here is the view to add a new category. <h1>Add a new Category</h1> <% form_for(@category) do |f| %> <%= f.error_messages %> <p> <%= f.label :name %><br /> <%= f.text_field :name %> </p> <h3>Add Brands required for this new category</h3> <ul> <% for b in @brands do -%> <li> <%= check_box_tag "categories[brand_ids]", "#{b.id}" -%> <%= "#{b.name}" -%> </li> <% end -%> </ul> <p> <%= f.submit "Create" %> </p> <% end %> <p> </p> <%= link_to 'Back', categories_path %>
I have read all the documentation & tutorials I can find on this and it is not clear to me if anything has to be done in the controller? Some examples imply it happens because of the association and other example have code such as: @category.brands = brand.find(@params[:brand_ids]) if @params[:brand_ids] Which produces an error for me.. You have a nil object when you didn't expect it!
TIA - Dave Porter