我正在使用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>
使这些字段依赖的最佳方法是什么?我在网上找到了几个关于此的主题但却找不到答案。
答案 0 :(得分:4)
最好的方法是使用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);
});
});
在您的控制器中:
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
现在你不需要偏袒。
答案 1 :(得分:0)
我会为每个字段使用不同的Id,并使用一些jquery动画和ajax魔法: 当点击一个字段时,我会做一个ajax调用来检索子组的所有记录,一旦我得到它们,使用幻灯片动画或类似的东西显示div。