I was working on this a couple of months back and could not figure out what I was doing wrong. I came back to it today and wanted to post again to see if any of you had an idea. Here is the problem.
I have this code:
<select name="myrep[RepFor]" size="3" multiple="multiple"> <%= options_from_collection_for_select(@rflists, "id", "keyword", @selected) %> </select>
The field I am storing is called RepFor in the myrep table. The options for the dropdown comes from a keyword table that have an id and name. The options I want have been fed into rflists. This all works good and displays properly with a multiple select dropdown with the proper names and values. Here is the html it renders:
<select name="myrep[RepFor]" size="3" multiple="multiple"> <option value="1808">Car Insurance</option> <option value="1809">Home Insurance</option> <option value="1810">Technology</option> <option value="1811">Accounting</option> <option value="1812">Legal</option>
So if I select Car Insurance, Home Insurance and Technology and submit it this is what gets written to the DB. Exactly as shown below.
--- - "1808" - "1809" - "1810"
When I reopen the form nothing is selected.
Now if I manually set @selected in my code as follows it selects the items I have forced when I reopen the form:
<% @selected = 1808, 1809, 1810 %> <select name="myrep[RepFor]" size="3" multiple="multiple"> <%= options_from_collection_for_select(@rflists, "id", "keyword", @selected) %> </select>
My question is what do I need to do to make the select write the data to the DB the same way I set it in @selected. Is there something that has to be done in the controller to keep it from being written as follows:
--- - "1808" - "1809" - "1810"
or do I need to do something special when reading it back?
Thanks for your help.
Jim