# Multiple Select Dropdown and Array

**URL:** <https://discuss.rubyonrails.org/t/multiple-select-dropdown-and-array/13046>\
**Category:** rubyonrails-talk\
**Created:** [May 17, 2007, 12:15am UTC](https://discuss.rubyonrails.org/t/multiple-select-dropdown-and-array/13046 "2007-05-17T00:15:07Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jim7](https://avatars.discourse-cdn.com/v4/letter/j/a5b964/32.png) [@Jim7](https://discuss.rubyonrails.org/u/Jim7)\
**Post date:** [May 17, 2007, 12:15am UTC](https://discuss.rubyonrails.org/t/multiple-select-dropdown-and-array/13046/1 "2007-05-17T00:15:07Z")

</div>

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"\> &nbsp;&nbsp;\<%= 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"\> &nbsp;&nbsp;\<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"\> &nbsp;&nbsp;\<%= 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

---

<div class="post-metadata">

**Author:** ![Jim7](https://avatars.discourse-cdn.com/v4/letter/j/a5b964/32.png) [@Jim7](https://discuss.rubyonrails.org/u/Jim7)\
**Post date:** [May 17, 2007, 2:59pm UTC](https://discuss.rubyonrails.org/t/multiple-select-dropdown-and-array/13046/2 "2007-05-17T14:59:36Z")

</div>

That is a Var Char in a mysql DB. All the selections sit in one field, the RepFor field in the table. The code:

\<select name="myrep[RepFor]" size="3" multiple="multiple"\> &nbsp;&nbsp;\<%= options\_from\_collection\_for\_select(@rflists, "id", "keyword", @selected) %\> \</select\>

writes that to the RepFor field in the myrep table. There is no special code in controller. I guess thats my question. What needs to be in there to write the values seperated by commas so that when I pull the field back in edit mode the entries are selected on the form. Alternately what do I need to do to get the multi select as I have it to work. Its crazy to me that this is not so straightforward. I must be missing some easy step. Do I need to do some sort of translation on the controller side? Do I need to store it in the DB in some other way?
