そのため、Sphinx を使用する場合、検索は 1000 件の結果に制限されます。ただし、 によって生成された結果のページネーション リンクが 1000 を超える場合は、will_paginateこれを考慮せず、 を超えるページへのリンクを提供して1000/per_pageください。最大ページ数などを設定する明白な方法はありますか?
乾杯。
そのため、Sphinx を使用する場合、検索は 1000 件の結果に制限されます。ただし、 によって生成された結果のページネーション リンクが 1000 を超える場合は、will_paginateこれを考慮せず、 を超えるページへのリンクを提供して1000/per_pageください。最大ページ数などを設定する明白な方法はありますか?
乾杯。
: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 クエリを回避できます。
if params[:page].to_i * 30 <= 1000
  @posts = Post.paginate(:page => params[:page], :per_page => 30)
end
    最善の解決策はこれを行うことであることがわかりました:
@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 ビュー ヘルパーの正しい動作が得られます。