2
난 내 레일 3.1 응용 프로그램에서 datatables를 사용하고 있습니다. Datatables는 서버 측에서 작동하도록 설정됩니다. 아약스 요청을 사용하여 서버에서 데이터를 가져 와서 테이블에 표시합니다.meta_search + datatables
데이터베이스에서 데이터를 가져 오기 위해 메타 검색을 필터로 사용합니다. 여기
= 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
그리고 여기에 서버에 아약스 요청을 전송에 대한 책임 자바 스크립트입니다 :
은$("#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 함수가 호출 될 때마다 전송됩니다. 어떻게 문제를 해결할 수 있습니까?