Ruby-on-Rails:根据先前的选择填充选择框

我有一组3个collection_selects,我想过滤下一个选择。 在第一个选择框中选择项目时,它应该限制第二个和第三个选择框的可能值。

类似的数据模型如下……

表和字段

    • lock_id
    • brand_id
    • master_id
    • regular_id
  • 锁定品牌
    • brand_id
  • 主密钥
    • master_id
    • brand_id
  • 常规密钥
    • regular_id
    • brand_id

因此,在填写添加新锁的表单时,会有针对品牌,主人和常规的选择框。 选择品牌后,它会将主键和常规键限制为仅选定品牌的键。

我发现了一些如何做到这一点的部分例子,但没有一个是完整的。 我很欣赏如何实现这一点的完整示例。

您需要做的就是将选择与事件监听器绑定,该事件监听器触发填充包含后续选择的其他2个部分的ajax请求。 即

<%= form_for @thing, :remote => true do, :update => 'second_form' |f| %> <%= hidden_field_tag 'form_partial', :value => 'form_2' %> <%= select_tag :some_param, [[a,a],[b,b],[c,c]] :class => 'submittable' %> <%= f.label :checked %> <%= thing.name %> <% end %> 
class ThingController < ApplicationController def update checkboxes = some_logic_to_select_checkboxes from params[:some_params] render :partial => params[:form_partial], :locals => {:select_menu => select_menu} end end $('.submittable').live('change', function() { $(this).parents('form:first').submit(); return false; });

您的表单部分应包含填充了您要启用的任何选项的表单。 只重复表格,思想是多余的。