2014-03-25 74 views
0

我有一個簡單的疑問。 我有兩個下拉字段,分別是州和其他城市。我從我的數據庫中加載這兩個我有兩個名稱狀態和城市表。此外,當我選擇一個國家城市acordingly改變我已經寫了jQuery代碼太.. 這是我的所有狀態加載到我的選擇標籤在Ruby on Rails中從數據庫獲取值

<%= jl.select :state_id , State.all.map{|j| [j[:name], j[:id]]}, {class: 'select2'} %>   

我想,當我加載頁面intialy我是不要我的城市領域變成空白。我希望它是一個下拉列表,其中包含與某些特定state_id相對應的城市。 那麼我應該如何選擇城市的標籤。城市表格包含名稱,ID和state_id。

+0

您的第一個州的所有城市,然後套入下降down.But更好的方式,通過Ajax來做到這一點。 –

回答

4

增加號碼至您的狀態下拉列表

<%= jl.select :state_id , State.all.map{|j| [j[:name], j[:id]]}, {class: 'select2',id:'states_dropdown'} %> 

然後你的城市下拉應該爲以下幾點:

<%= jl.select :city_id , City.where(:state_id=> "specific_id").map{|j| [j[:name], j[:id]]}, {class: 'select2'} %> 

,並在你的咖啡腳本文件中添加此

$("#states_dropdown").change -> 
     $.ajax 
      url: '/category/childrens' 
      type: 'GET' 
      data : 
       state_id: $(this).val() 
      success: (data, status, response) -> 
       #update cities dropdown 
      error: -> 
       # Hard error 
+0

是否有任何方式,我可以得到state_id從job_location表中存儲的值..就像我寫p job.job_locations.first我得到的輸出像#在控制檯中。我想單獨提供那個state_id –

+0

這就是你要求的job.job_locations.first.state_id或者我錯了嗎? – Kimooz

+0

是啊幾乎所有說d相同的答案..但即時通訊錯誤,當我把類似於<%p job.job_locations.first.state_id%> 未定義的方法'state_id'爲零:NilClass –

2

你應該在加載時編寫代碼。

var cities_obj_arr = <%= @cities.to_json %>; 

$(document).on('change', "#state_select_box", function(){ 
    var state_id = $(this).val(); 
    var str_option = ''; 
    $.each(cities_obj_arr, function(index, city_obj){ 
    if(state_id == city_obj['city']['state_id']){ 
     str_option = str_option + "<option value='"+city_obj['city']['name']+"'">"+city_obj['city']['name']+"</option>"; /*city_obj['city']['name'] city is object name for cities*/ 
    } 
    }); 
    $(this).html(str_opotion); 
}); 

請看看形象,它會幫助更多。

enter image description here