2017-10-13 45 views
0

我有一个模型公司属于一个行业。过滤器选择字段使用轨道上的前一个字段

当一个子公司注册时,我想按行业过滤公司的名称。所以当用户选择行业时,下一个领域只显示属于该行业的公司的名称。

在窗体上我有这样的:

<%= f.collection_select(Industry.all, :id, :name) %> 
<%= f.collection_select(:industry_id, Company.all, :id, :name) %> 

它给了我选择的所有行业和公司,但我怎么可以过滤公司的名称已被选中的行业何时改变?

+0

你试过了什么? – efkin

回答

0

使用ajax做到这一点的简单方法。我可以告诉你路径

1-更改行业的名称,你需要发送ajax调用控制器。 前 -

$('#industry_select_box_id').on('change', function(){ 
    var industry_id = $('#industry_select_box_id :selected').val(); 
    $.ajax({ 
     url: "/get_company_lists_url", 
     type: "GET", 
     data : { 
     id: industry_id 
     }, 
     dataType: "script", 
    }); 
    }) 

2 - 做一个动作(EX- company_lists)到您的控制器从这个AJAX调用得到企业名单。并用ajax调用这个acrion的url替换/get_company_lists_url。并获得@comapany_listsparams[industry_id]

3-进行部分像_companies_lists.html.erb 并与使用f.collection_select(:industry_id, Company.all, :id, :name)你可以通过broswer检查元素名称命名你同名的select_tag。并在部分(假设你的下一个slect盒子的名字是一样 - 北美经销商[industry_id])

<%= select_tag "comapny[industry_id]", options_from_collection_for_select(@comapany_lists, :id, :name) %> 

注意 - 在这里你@comapany_lists的是,你从AJAX调用

4-在js.erb获取变量( EX- company_lists.erb)

$('#your_company_lists_div_id').html("j render 'companies_lists'"); 

注意到这里your_company_lists_div_id是要展示与行业相关的北美经销商选择列表格的ID

摘要 - 简单地说,阿贾克斯呼吁改变你的行业,并与选定的公司名单呈现部分。 希望这应该为你工作,谢谢,你可以在任何关注的情况下发表评论。

+0

对不起,伙计。我一直在试着理解你说的几句话,但我仍然对大部分内容感到困惑。你能解释3更好一点吗? – Allan

+0

你有没有试过在selectbox的'on change'事件上调用ajax请求,它的简单性,我在这里解释的是,你必须通过ajax发送一个id选择行业的行业id并呈现公司列表与另一个选择框中的该行业相关联。而已。去尝试一下 – Gabbar