我有一个属于某行业的模型公司。
当一个附属公司注册时,我想按行业过滤公司的名称。因此,当用户选择行业时,下一个字段仅显示属于该行业的公司的名称。
在表单上,我有这个:
<%= f.collection_select( Industry.all, :id, :name) %>
<%= f.collection_select(:industry_id, Company.all, :id, :name) %>
它为我提供了所有行业和公司的选择,但是当行业被选择时,我如何过滤要更改的公司名称?
发布于 2017-10-15 02:59:42
使用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调用中将/get_company_lists_url
替换为此acrion的url。用你的params[industry_id]
获取@comapany_lists
3-使用你在f.collection_select(:industry_id, Company.all, :id, :name)
中使用的名字做一个类似_companies_lists.html.erb
的部分,并用相同的名字做一个select_tag,你可以在浏览器中通过inspect元素得到名字。和部分(假设您的下一个选择框名称类似于- comapnyindustry_id)
<%= select_tag "comapny[industry_id]", options_from_collection_for_select(@comapany_lists, :id, :name) %>
注意-这里您的@comapany_lists
是您从ajax调用中获得的变量
4英寸js.erb (不含company_lists.erb)
$('#your_company_lists_div_id').html("j render 'companies_lists'");
注意,这里的your_company_lists_div_id
是div的id,您想要在其中显示与行业相关的所选公司列表
摘要-简单的ajax调用,改变你的行业,并用选定的公司列表呈现部分。希望这能为你工作,谢谢你,如果你有任何问题可以在评论中询问。
https://stackoverflow.com/questions/46738753
复制相似问题