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 回答