【问题标题】:Limit number of pages in will_paginate限制 will_paginate 中的页数
【发布时间】:2012-04-27 17:53:52
【问题描述】:

因此,在使用 Sphinx 时,搜索限制为 1000 个结果。但是,如果will_paginate 生成的结果分页链接超过 1000 个,请不要考虑这一点,并提供指向 1000/per_page 之外的页面的链接。设置 max pages 或类似的方法是显而易见的吗?

干杯。

【问题讨论】:

    标签: ruby-on-rails ruby pagination will-paginate


    【解决方案1】:

    我认为最好将参数: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查询来检索条目总数。

    【讨论】:

      【解决方案2】:

      我发现最好的解决方案是这样做:

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

      【讨论】:

        【解决方案3】:
        if params[:page].to_i * 30 <= 1000
          @posts = Post.paginate(:page => params[:page], :per_page => 30)
        end
        

        【讨论】:

          猜你喜欢
          • 2014-06-24
          • 2019-05-20
          • 2021-07-11
          • 2013-09-03
          • 1970-01-01
          • 1970-01-01
          • 2010-11-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多