Ruby on Rails Country / State Seleccione Enigma

Estoy tratando de implementar algo aparentemente muy simple, y he estado golpeándome la cabeza contra esto durante días en este momento.

Mi resultado final deseado es un menú desplegable de selección de país, vinculado a un menú desplegable de selección de estado, de tal manera que cuando se selecciona un país determinado, se conocen los estados IF ENTONCES esos estados se muestran en un menú desplegable de selección, y si NO se conocen estados para ese país, se mostrará un campo de texto en su lugar.

Siento que casi estoy allí. En este punto, la interfaz realmente generará esa lista de estados en función del país de las personas, excepto que se niega a actualizar el menú desplegable dinámicamente.

La parte de mi vista donde se reúne la ubicación del país y el estado se ve así:

# _person_setup.html.erb
         <td>
        <%= f.label :country, 'Select your country' %>*<br />
        <%= f.select :country, Carmen::country_names, {}, 
          {:style => 'width: 200px', 
          :id => 'country_select',
          :onchange => remote_function(
            :url => {:action => 'update_states'},
            :with => "'country='+value")} %>            
      </td><td>
        <p>
        <div id="states_div">
            <%= render :partial => 'states', 
                :object => Carmen::states(
                            Carmen::country_code(
                              @person.country)),
                :locals => {:form => f} %>
       </div>
        </p>            
      </td>    

El parcial al que se hace referencia en el DIV es el siguiente:

 # _states.html.erb
<% unless states.nil? or states.empty? %>
    <%= form.label :state, 'Select your state' %>*<br />
    <%= form.select :state, states.collect{|s| [s[0], s[0]]} %>
<% else %>
    <%= form.label :state, 'Please enter state or province' %>*<br />
    <%= form.text_field :state %>
<% end %>

Finalmente, el código del controlador que está destinado a actualizar la lista de estados dinámicamente:

def update_states    
puts "Attempting to update states..."    
q = params[:country]    
states = Carmen::states(Carmen::country_code(q))
puts "Country = #{q}, states = #{states.collect{|s| s[0]}.join(", ")}."
render :update do |page|
    page.replace_html "states_div", 
      :partial => 'states',
      :object => states,
      :locals => {:form => form_for(@person)}
end
puts "OK"
end

Ahora, este código se llama en el momento adecuado y genera las listas de estados correspondientes. Por ejemplo, cuando el usuario hace clic en Australia, "Intentando actualizar estados ... País = Australia, estados = Territorio de la Capital Australiana, Nueva Gales del Sur, Territorio del Norte, Queensland, Australia del Sur, Tasmania, Victoria, Australia Occidental" aparece en el proceso del servidor Sin embargo, no actualiza la página y no imprimirá "OK" al final. En resumen, la línea que está fallando es, sin duda,

page.replace_html "states_div", 
      :partial => 'states',
      :object => states,
      :locals => {:form => form_for(@person)}

enga en cuenta que reemplazar esta línea con

page.replace_html 'states_div', "<b>is it working</b>" 

reemplaza adecuadamente el div, pero por supuesto no con nada útil.

Puede alguien ayudarme a entender lo que está pasando aqu

Respuestas a la pregunta(6)

Su respuesta a la pregunta