我有一个属于行业的模型公司。
当联盟会员注册时,我想按行业过滤公司名称。因此,当用户选择行业时,下一个字段仅显示属于该行业的公司的名称。
在表格上我有这个:
<%= f.collection_select( Industry.all, :id, :name) %>
<%= f.collection_select(:industry_id, Company.all, :id, :name) %>
它为我提供了所有行业和公司的选择,但是如何在选择行业时过滤要更改的公司名称?
答案 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调用即可更改您的行业并使用选定的公司列表进行部分调整。 希望这对您有用,谢谢,如有任何疑虑,可以发表评论。