我在用户表单中有一个动态下拉列表,其中包含基于所选状态的城市。在创建记录时,表单非常有效,但在编辑用户时,只有状态会填充现有值 - 理想情况下,表单将填充用户的州和城市(在下拉列表中填充州的城市)。
在表格中,我有:
<%= 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'
答案 0 :(得分:0)
可能控制器的edit
方法没有填充@cities
。
尝试添加new
上的行,如果不行,请在部分中添加<%= raise cities.inspect %>
以查看内容。