RubyOnRails嵌套/依赖下拉菜单

时间:2011-07-15 00:45:42

标签: jquery ajax ruby-on-rails-3

我有3个下拉列表的视图。例如,我有国家,州和城市,在视图中,当用户选择Country = US时,然后在State下拉列表中,它应填充仅美国州的列表,并且当选择州时,下拉列表仅需要调出该州的城市。我的数据库设置正确(State有州名和country_id字段,City有城市名和state_id)

我在我的视图中实现了以下内容,但无论用户选择如何,这都会为我带来所有记录。

<div class="field">
  <%= f.label :sector, "Sector" %>
  <%= f.collection_select :sector_id, Sector.all, :id, :nombre, :prompt => false  %>
</div>
<div class="field">
  <%= f.label :municipio %>
  <%= f.collection_select :municipio_id, Municipio.all, :id, :nombre, :prompt => false  %>
</div>
<div class="field">
  <%= f.label :provincia %>
  <%= f.collection_select :provincia_id, Provincia.all, :id, :nombre, :prompt => false  %>
</div>

我如何让彼此的这些下拉依赖者?

1 个答案:

答案 0 :(得分:0)

尝试尝试的一件事就是添加一个选项,使其成为:

<%= f.label :state%>
<%= f.collection_select :country, :state_id, State.all, :id, :nombre, :prompt => false  %>
</div>
<div class="field">
<%= f.label :city%>
<%= f.collection_select :state, :city_id, City.all, :id, :nombre, :prompt => false  %>
</div>

collection_select中的前三个选项是object,method,collection。所以这就像说,获取属于您的国家实例的状态ID并返回State.all返回的集合中的那些。

确保您的模型设置正确:

class State < ActiveRecord::Base
  belongs_to :country
end
class City < ActiveRecord::Base
  belongs_to :state
end