簡體   English   中英

分頁與數據表

[英]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通過使用limitoffset來創建SQL查詢的“范圍”來工作

本質上,如果您正確地實現了gem,它將僅從數據庫中為視圖拉回所需的數據,因此有10個結果

您做錯了方法。 首先DONOT使用will_paginate當您使用datatablessame page 您沒有看到分頁,因為分頁會將記錄數限制為10。因此,要使數據表能夠識別並分頁,您必須在頁面上打印所有記錄,而數據表將發現該表中有10行以上,並且相應地對表進行分頁。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM