我正在使用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>
使这些字段相关的最佳方法是什么?我在网上找到了几个与此相关的主题,但找不到真正的答案。
最佳答案
最好的方法是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);
});
});
在您的 Controller 中:
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
现在,您不需要局部。
关于ruby-on-rails - 表格中与Rails相关的collection_select字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5311284/