Я использую datatables в своем приложении rails 3.1.Datatables настроен для работы на стороне сервера.Я использую ajax-запросы, чтобы получить данные с сервера и затем отобразить их в таблице.
Я использую meta_search в качестве фильтра для получения данных из базы данных.
Вот код на мой взгляд:
= simple_form_for @search, :url => offer_coupons_path(@offer), :html => {:method => :get} do |f|
= f.select :redeemed_equals, [['All Coupons', '']] + [["Redeemed", true], ["Not Redeemed", false]]
Вот метод в контроллере:
def offer_coupons_list
search_params = params[:search] || {"meta_sort"=>"user_full_name.asc"}
@search = Coupon.search(search_params)
@coupons = @search.includes(:user).includes(:order => :gift).page(@page)
render :partial => 'coupons/offer_coupons_list'
end
А вот javascript, отвечающий за отправку ajax-запроса на сервер:
$("#search_redeemed_equals").change(function(e){
table = $("#grid").dataTable();
var data = $("#search_redeemed_equals").parents("form:first").serialize();
$.ajax({
'url': 'coupons/offer_coupons_list',
'data': data,
'type': 'POST'
});
table.fnDraw();
e.preventDefault();
});
Проблема заключается в том, что скрипт отправляет два ajax-запроса на сервер.Первый запрос верен и возвращает отфильтрованные данные.Другой запрос отправляется, когда fnDraw () вызывается и возвращает не отфильтрованные данные.Таким образом, данные в таблице не изменились.Запрос отправляется каждый раз, когда вызывается любая из функций datatables.Как я могу решить проблему?