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