[英]Pagination with datatables
我正在關注以下railscast: http: //railscasts.com/episodes/340-datatables。
我正在嘗試讓我的數據表每10個項目分頁一次。 我的代碼如下所示:
def index
@search = Product.search do |query|
query.fulltext params[:sSearch]
query.with(:store_id, @store.id)
query.paginate(:page => page, :per_page => per_page)
end
@products = @search.results
@headers = @products.map(&:data).flat_map(&:keys).uniq
@product_data = @products.map{ |product| product[ :data ].values }
respond_to do |format|
format.html
format.json do
render :json=> {
"sEcho" => params[:sEcho].to_i,
"iTotalRecords" => @products.count,
"iTotalDisplayRecords"=> @products.count,
"aaData" => @product_data.as_json
}
end
end
end
private
def page
params[:iDisplayStart].to_i/per_page + 1
end
def per_page
params[:iDisplayLength].to_i > 0 ? params[:iDisplayLength].to_i : 10
end
我已經安裝了will_paginate gem,但是數據表似乎無法識別它應該進行分頁,它最多顯示10條記錄,並且禁用了分頁按鈕。
怎么了
我不是Rails開發人員,但在我看來問題是:
"iTotalRecords" => @products.count,
@products.count
是查詢已分頁時的記錄計數(取決於頁面,總是10個或更少)。
嘗試將此值設置為查詢的總記錄數( 不分頁) 。
我認為問題是您應該使用total_entries
而不是count
。
所以改變這個:
"iTotalDisplayRecords"=> @products.count
對此:
"iTotalDisplayRecords"=> @products.total_entries
紐扣
您需要在視圖中包括<%= will_paginate @products %>
(這允許您每次使用新的分頁內容刷新數據表:
#app/views/products/datatable.html.erb
<<datatable>>
<%= will_paginate @posts %>
記錄
如果您看到10條結果是由於will_paginate
,則表明您在正確的軌道上。 gem通過使用limit
和offset
來創建SQL查詢的“范圍”來工作
本質上,如果您正確地實現了gem,它將僅從數據庫中為視圖拉回所需的數據,因此有10個結果
您做錯了方法。 首先DONOT使用will_paginate
當您使用datatables
上same page
。 您沒有看到分頁,因為分頁會將記錄數限制為10。因此,要使數據表能夠識別並分頁,您必須在頁面上打印所有記錄,而數據表將發現該表中有10行以上,並且相應地對表進行分頁。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.