Multiple Select Dropdown and Storing Problem

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

...this looks like a Ruby on Rails question. You may have better
success asking this question on the Ruby on Rails group, rather than
the (general language) Ruby mailing list/newsgroup/forum beast.

http://groups.google.com/group/rubyonrails-talk

···

On May 17, 3:29 pm, Jim <jimn...@gmail.com> wrote:

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.

That looks like YAML, but with some of the whitespace trimmed out.

irb(main):001:0> require 'yaml'
=> true
irb(main):002:0> YAML.load(%{--- - "1808" - "1809" - "1810"})
ArgumentError: syntax error on line 0, col 13: `--- - "1808" - "1809" - "1810"'
        from /usr/lib/ruby/1.8/yaml.rb:133:in `load'
        from /usr/lib/ruby/1.8/yaml.rb:133:in `load'
        from (irb):2
irb(main):003:0> YAML.load(%{---\n - "1808"\n - "1809"\n - "1810"})
=> ["1808", "1809", "1810"]

Note that what you're trying to do is to put a quart into a pint pot - i.e.
write a ruby Array into a single field in the database.

···

On Fri, May 18, 2007 at 06:30:03AM +0900, Jim wrote:

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"