2016-02-21 32 views
0

我有這個動態選擇框的coffeescript函數,我需要將「modelsSelect」內容傳遞給這個其他腳本,但我無法讓它工作。在ajax中傳遞字符串

diys.coffee

dynamicSelect = (makesSelect, modelsSelect) -> 
    $(document).on 'change', makesSelect, (evt) -> 
    $.ajax 'update_make_models', 
     type: 'GET' 
     dataType: 'script' 
     data: { 
     make_id: $("#{makesSelect} option:selected").val(), 
     'models': modelsSelect 
     } 
     error: (jqXHR, textStatus, errorThrown) -> 
     console.log("AJAX Error: #{textStatus}") 
     success: (data, textStatus, jqXHR) -> 
     console.log("Dynamic make select OK!") 


dynamicSelect '#diy_attached_vehicles_attributes_0_make', '#diy_attached_vehicles_attributes_0_model' 
dynamicSelect '#diy_attached_vehicles_attributes_1_make', '#diy_attached_vehicles_attributes_1_model' 

update_make_models.coffee

$(models).empty() 
    .append("<%= escape_javascript(render "make_models/make_model") %>") 

make_models/_make_models.html.erb

<% @models.collect do |models| %> 
    <option value="<%= models.id %>"><%= models.make_model_name %></option> 
<% end %> 

------------------------------------------------ -------------------------------------------------- ---------------------------------- 編輯

我的形式

繼承人部分containig那些選擇框

<div class="vehicle_field"> 
    <%= f.fields_for :attached_vehicles do |av| %> 
     <p>Select make</p> 
     <%= av.select :make, options_for_select(@makes.collect { |make|[make.make_name, make.id] }, 0), {} %><br> 
     <p>Select model</p> 
     <%= av.select :model, (render "make_models/make_model"), {} %><br> 
     ... 
    <% end %> 
</div> 
+1

究竟你「的意思,但我只是無法得到它的工作?「究竟發生了什麼或什麼不發生? – IceFire

+0

當我選擇make make選擇框時,它應該發送選定make的make_id(因爲它是),併發送「modelsSelect」內容(模型選擇框的id)到「update_make_models.coffee」,以便清空並追加它。但是現在當我選擇make時,模型選擇框沒有任何反應,並且在瀏覽器控制檯中我得到「AJAX Error:parsererror」。 –

回答

0

想通了!

diys.coffee

dynamicSelect = (makesSelect, modelsSelect) -> 
    $(document).on 'change', makesSelect, (evt) -> 
    $.ajax 'update_make_models', 
     type: 'GET' 
     dataType: 'script' 
     data: { 
     make_id: $("#{makesSelect} option:selected").val(), 
     model_div_id: modelsSelect 
     } 
     error: (jqXHR, textStatus, errorThrown) -> 
     console.log("AJAX Error: #{textStatus}") 
     success: (data, textStatus, jqXHR) -> 
     console.log("Dynamic make select OK!") 


dynamicSelect '#diy_attached_vehicles_attributes_0_make', '#diy_attached_vehicles_attributes_0_model' 
dynamicSelect '#diy_attached_vehicles_attributes_1_make', '#diy_attached_vehicles_attributes_1_model' 

diys_controller.rb

def update_make_models 
    @models = MakeModel.where("make_id = ?", params[:make_id]) 
    @modelsid = params[:model_div_id] 
    respond_to do |format| 
    format.js 
    end 
end 

update_make_models.coffee

$("<%= @modelsid %>").empty() 
    .append("<%= escape_javascript(render "make_models/make_model") %>")