form.select problem

Dear all,

I tried to implement the code for 2 select boxes that are dependent on each other. One has a list of countries, and one a list of states. Now, this code works:

<div id='state'>   <%= select :state, :id, Country.find(@country.id).states.map {|x| [x.name, x.id]} %> </div> <%= select :country, :id, Country.find(:all, :order => 'name ASC').map {|x| [x.name, x.id]} %>

However, I want to place this inside my form_for. This code does not work:

<% form_for (:trail, :url => { :action => "update", :id => @trail }, :html => { :multipart => true }) do |form| %>   <div id='state'>     <%= select :state, :id, Country.find(@country.id).states.map {|x| [x.name, x.id]} %>   </div>   <%= select :country, :id, Country.find(:all, :order => 'name ASC').map {|x| [x.name, x.id]} %>   <%= submit_tag "Save" %> <% end %>

The view crashes with this error message:

ActionView::TemplateError (undefined method `merge' for #<Array: 0x33d1b68>) on line #110 of app/views/trail_editor/edit.rhtml: 107: </tr> 108: <tr> 109: <td><label for="country">Country:</label></td> 110: <td><%= form.select :country, :id, Country.find(:all, :order => 'name ASC').map {|x| [x.name, x.id]} %></td> 111: </tr> 112: <tr> 113: <td><label for="trailhead_directions">Directions to Trailhead:</label></td>

Any help would be greatly appreciated.

Thank you,

Nick wrote:

The view crashes with this error message:

ActionView::TemplateError (undefined method `merge' for #<Array: 0x33d1b68>) on line #110 of app/views/trail_editor/edit.rhtml: 107: </tr> 108: <tr> 109: <td><label for="country">Country:</label></td> 110: <td><%= form.select :country, :id, Country.find(:all, :order => 'name ASC').map {|x| [x.name, x.id]} %></td>

You want: <%= form.select :country_id, ...

Nick, What I can't figure out is that you seem to try to select the STATE first and then select the country. This seems backwards? Could you digest a bit of what's going on here? And thank you Mark for filling in the error. Thank you, Kathleen