Rails依赖于表单中的collection_select字段

Luc*_*Luc 5 forms ruby-on-rails

我正在使用rails应用程序,但无法找到如何处理依赖的下拉列表.我有3个型号: - 有几个组的类别 - 有几个成员的组 - 成员

选择类别后,我希望此类别中的组填充第二个下拉列表(组和成员之间的相同内容).

我有以下表格(显然这不符合我喜欢的方式,因为我采取了特定型号的所有项目)...

<div class="field">
<%= f.collection_select(:category, Category.find(:all), :id, :name, {:include_blank => 'Category'}) %>
</div>
<div class="field">
<%= f.collection_select(:group, Group.find(:all), :id, :name, {:include_blank => 'Group'}) %>
</div>
<div class="field">
<%= f.collection_select(:member, Member.find(:all), :id, :name, {:include_blank => 'Member'}) %>
</div>
<div class="actions">
<%= f.submit %>
</div>
Run Code Online (Sandbox Code Playgroud)

什么是使这些领域依赖的最佳方法?我在网上找到了几个关于此问题的主题但却找不到答案.

Ash*_*ish 5

最好的方法是 AJAX 调用。在开始时只需填充类别下拉列表。并在类别更改时进行 ajax 调用并填充组。对组下拉更改中的成员执行相同的操作。

尝试这样的事情:

$("#category']").click(function(){
  var url = '/get_drop_down_options?category_id=' + $(this).val()
  $("#group").removeOption(/./)
  $.get(url, function(data) {
    $('#group').addOption(data, false);
  });
});
Run Code Online (Sandbox Code Playgroud)

在你的控制器中:

def get_drop_down_options
  val = params[:category_id]
  #Use val to find records
  options = YourModel.collect{|x| "'#{x.id}' : '#{x.label}'"}    
  render :text => "{#{options.join(",")}}" 
end
Run Code Online (Sandbox Code Playgroud)

现在你不需要部分。