will_paginate有没有办法将per_page设置为'all'

时间:2011-02-25 13:55:09

标签: ruby-on-rails

Rails 2.3.5 / Will_Paginate Gem 2.3.15

我有一个页面部分,用户可以选择每页显示多少项目(使用“全部”选项)。我不喜欢在那里拥有'all'但是列表中的每个项目都有一个复选框,以便可以对列出的项目执行批量操作(如果项目被分解,用户无法选择查询将返回的所有项目到页面)。

我没有找到答案,但有没有办法将:per_page选项设置为'all'?我暂时只是输入一个巨号(1000000)作为解决方法。这是唯一的方法吗?

我想过用find_by_sql替换paginate_by_sql条件,但是在视图中我必须添加逻辑以不写“<%= will_paginate @ items%>”

    if cookies[:items_per_page]
      if cookies[:items_per_page] == 'ALL'
        @items =  Item.paginate_by_sql(sql, :page => params[:page], :per_page => 1000000)
      elsif %w(10 20 30 40 50 75 100).any? {|str| cookies[:items_per_page].include? str}
        @items =  Item.paginate_by_sql(sql, :page => params[:page], :per_page => cookies[:items_per_page].to_i)
      else #cookie doesn't contain a valid choice, default to '10'
        @items =  Item.paginate_by_sql(sql, :page => params[:page], :per_page => 10)
      end
    else #cookie doesn't exist, default to '10'
      @items =  Item.paginate_by_sql(sql, :page => params[:page], :per_page => 10)
    end

1 个答案:

答案 0 :(得分:6)

Item.paginate_by_sql(sql, :page => params[:page], :per_page => Item.count)