Rails动态下拉列表未以编辑形式预先填充

时间:2011-09-12 03:43:26

标签: jquery ruby-on-rails forms dynamic drop-down-menu

我在用户表单中有一个动态下拉列表,其中包含基于所选状态的城市。在创建记录时,表单非常有效,但在编辑用户时,只有状态会填充现有值 - 理想情况下,表单将填充用户的州和城市(在下拉列表中填充州的城市)。

在表格中,我有:

<%= f.input :state_id, :collection => @states, :prompt => "Pick Your State" %>
</div>    
<div id="usercities">
  <%= render :partial => 'cities', :locals => { :cities => @cities, :user => form } %>
</div>

在我所拥有的部分中:

<%= simple_fields_for :user do |fields| %>
  <% if cities.blank? %>
    <%= fields.input :city_id, :collection => cities, :prompt => "Pick Your State" %>
  <% else %>
<%= fields.input :city_id, :collection => cities, :prompt => "Pick Your City" %>
  <% end %>
<% end %>

在控制器中

    @states = State.where(:active => true)
    @cities = City.where(:active => true, :state_id => [@user.state_id])

当我编辑表单时,城市下拉列表为空白,但如果我更改状态,则会正确填充城市。

谢谢!

编辑:

不确定它是否相关,但在routes.rb中我有     匹配'users / update_city_select /:id',: controller =&gt;'users',:action =&gt; 'update_city_select'

1 个答案:

答案 0 :(得分:0)

可能控制器的edit方法没有填充@cities

尝试添加new上的行,如果不行,请在部分中添加<%= raise cities.inspect %>以查看内容。