6

そのため、Sphinx を使用する場合、検索は 1000 件の結果に制限されます。ただし、 によって生成された結果のページネーション リンクが 1000 を超える場合は、will_paginateこれを考慮せず、 を超えるページへのリンクを提供して1000/per_pageください。最大ページ数などを設定する明白な方法はありますか?

乾杯。

4

3 に答える 3

14

:total_entriesメソッドにパラメーターを送信する方が良いと思いますpaginate

@posts = Post.paginate(:page => params[:page], :per_page => 30, 
                       :total_entries => 1000)

will_paginate は、1000 件の結果を表示するために必要なページ数に対してのみリンクを生成します。

要求されたページが間隔に属していることを確認することもできます。

if params[:page].to_i * 30 <= 1000
  @posts = Post.paginate(:page => params[:page], :per_page => 30, 
                         :total_entries => 1000)
end

さらに、パラメーター を送信することにより:total_entries、will_paginate が通常実行してエントリの総数を取得する sql COUNT クエリを回避できます。

于 2012-11-30T14:48:19.850 に答える
2
if params[:page].to_i * 30 <= 1000
  @posts = Post.paginate(:page => params[:page], :per_page => 30)
end
于 2012-04-16T12:08:27.003 に答える
1

最善の解決策はこれを行うことであることがわかりました:

@results = Model.search(...)
if @results.total_pages >= (1000/Model.per_page)
  class << @results; def total_pages; 1000/Model.per_page; end end
end

1000 がハードコードされていないことが望ましい場合:)。これにより、無料で will_paginate ビュー ヘルパーの正しい動作が得られます。

于 2012-04-19T08:54:32.457 に答える