2017-10-13 72 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