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