HABTM Checkboxes and Multiple Records headache


#1

I haven’t been able to get this to work for some reason, and its
driving me nuts, and help is greatly appreciated.
So here’s the deal:

I’m have a table called Songs
Each song has_many versions called Production_edits
each production_edit has its own instrumentation.
Instruments has_and_belongs_to_many Production_edits and vice versa.
and i have my instruments_production_edits join table

In my new song form, you can add multiple production_edits, the only
problem is that since I’m using HABTM checkboxes for the
instrumentation, for every instrument i check, rails interprets it as
a seperate production_edit.

Here’s my view in for the new song form:


<% form_for(@song, :url => {:action => ‘create_song’}, :html =>
{ :multipart => true } ) do |f|%>
<%= error_messages_for :song %>…

(below is in my _production_edit partial)
<% @production_edit = production_edit %>
<% fields_for “song[production_edit_attributes][]”, production_edit do
|production_edit_form| %>
<%= error_messages_for :production_edit %>

<%= production_edit_form.text_field :title %> (etc…)
<% for instrument in Instrument.find(:all) %>
<%= check_box_tag “song[production_edit_attributes][][instrument_ids]
[]”, instrument.id, production_edit.instruments.include?(instrument)
%> <%= instrument.name %>

<% end %>
<% end %>

Then in my song.rb model i have:

validates_associated :production_edits

def production_edit_attributes=(production_edit_attributes)
production_edit_attributes.each do |attributes|
production_edits.build(attributes)

end

end

When i fill out the form with each production_edit having more than
one instrument i get something like this in my parameters:

“production_edit_attributes”=>[{“title”=>"", “instrument_ids”=>[]},
{“title”=>"", “instrument_ids”=>[]}, {“instrument_ids”=>[“1”]},
{“instrument_ids”=>[“3”]}, {“instrument_ids”=>[“1”]},
{“instrument_ids”=>[“2”]}]

when I’m actually trying to achieve this:

“production_edit_attributes”=>[{“title”=>"", “instrument_ids”=>
[“1,“3”]}, {“title”=>”", “instrument_ids”=>[“1”,“2”]}]

I’ve also tried something similar with a multiple select box, however
I get the same result in the params. Any ideas? or let me know if
I’m not clear enough on what I’m trying to do.