限制will_paginate中的页数

因此,使用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个结果所需的页数生成链接。

您还可以validation请求的页面是否属于间隔:

 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视图助手的正确行为,