2014-05-01 14 views
0

我試圖發送一個數組的所有選中的值到控制器每次複選框被選中,但無法弄清楚如何使用AJAX做到這一點。如何在檢查時動態地將視圖中的複選框值傳遞給控制器​​?

html.erb:

<div class="items"> 
<input type="checkbox" class="item-checkbox" value="a">A 
<input type="checkbox" class="item-checkbox" value="b">B 
<input type="checkbox" class="item-checkbox" value="c">C 
</div> 

的javascript:

var selected_items = []; 
$(".item-checkbox").click(function() { 
     var item = $(this).val(); 
     selected_items.push(item); 
} 

控制器:

class BudgetController < ApplicationController 

    def view 

    .... 

    end 

end 

如何通過selected_items陣列控制器,而無需重新加載頁面?

+0

你試過了什麼?一個簡單的'$ .ajax' post調用或'$ .post'會做到這一點。你只需要將輸入序列化到'data'屬性。 –

+0

我試過,但我如何訪問控制器中的數據? –

+0

您將需要顯示您的控制器代碼。它需要與處理常規表單相同的代碼。 –

回答

1

這就需要把它們在表單中,並獲取表單提交:

$('#MyForm').submit(function (event) {  
    event.preventDefault(); // stop form from submitting normally 
    var form = $(this); // get the form 
    var dataToSend = form.serialize(); // get the submitted form items 
    var url = form.attr('action'); // where we're submitting the data to 
    $.post(url, dataToSend, function (data) { 
     // optional function to deal with returned data 
    }).done(function (data) { 
     // what to do when it's completed 
    }).fail(function (jqXHR, textStatus, errorThrown) { 
     // what to do if it fails 
    }); 
}); 

然後,您可以處理他們像在服務器端定期提交表單。

相關問題