使用rails中的前一个字段筛选选择字段

时间:2017-10-13 22:19:34

标签: javascript ruby-on-rails

我有一个属于行业的模型公司。

当联盟会员注册时,我想按行业过滤公司名称。因此,当用户选择行业时,下一个字段仅显示属于该行业的公司的名称。

在表格上我有这个:

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

它为我提供了所有行业和公司的选择,但是如何在选择行业时过滤要更改的公司名称?

1 个答案:

答案 0 :(得分:0)

使用ajax执行此操作的简单方法。我可以告诉你路径

1-在更改行业名称时,您需要向控制器发送ajax调用。 前 -

class Mesh 
{
    Mesh(const Mesh &) = delete;
    Mesh & operator = (const Mesh &) = delete;

    Mesh( Mesh && );
    Mesh & operator = ( Mesh && );

    ....
};

2-对您的控制器执行操作(ex- company_lists)以获取此ajax调用的公司列表。并在ajax调用中用此acrion的url替换 $('#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", }); }) 。并使用/get_company_lists_url

获取@comapany_lists

3-比较params[industry_id]  并创建一个select_tag,其名称与您在_companies_lists.html.erb中使用的名称相同,您可以通过broswer中的inspect元素获取名称。并且部分(假设你的下一个选择框名称是 - comapny [industry_id])

f.collection_select(:industry_id, Company.all, :id, :name)

注意 - 这里你的<%= select_tag "comapny[industry_id]", options_from_collection_for_select(@comapany_lists, :id, :name) %> 是你从ajax调用获得的变量

4- in js.erb(ex- company_lists.erb)

@comapany_lists

请注意$('#your_company_lists_div_id').html("j render 'companies_lists'"); 是您要显示与行业相关的选定comapny列表的div的ID

摘要 - 只需ajax调用即可更改您的行业并使用选定的公司列表进行部分调整。 希望这对您有用,谢谢,如有任何疑虑,可以发表评论。