will_paginate有没有一种方法来设置per_page为“所有”
问题描述:
的Rails 2.3.5/will_paginate gem是2.3.15will_paginate有没有一种方法来设置per_page为“所有”
我有一个页面部分,在那里用户可以选择多少项每页显示(与'所有'选择)。我不喜欢那里有'全部',但是列表中的每个项目都有一个复选框,以便可以对列出的项目执行批量操作(如果项目被分解,用户无法选择查询将返回的所有项目成页面)。
我还没有找到答案,但有没有办法将per_page选项设置为'all'?我暂时只是把一个巨大的数字(1000000)作为解决方法。这是做到这一点的唯一方法吗?
我想到刚用的find_by_sql更换paginate_by_sql条件,但随后在视图中我不得不在逻辑添加到不写了“<%= will_paginate @项%>”
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
答
Item.paginate_by_sql(sql, :page => params[:page], :per_page => Item.count)
DOH! - 谢谢! – Reno 2011-02-25 14:13:02
请注意,这样做会将所有项目放在一个页面上,因此如果您的“页面”变量是大于1的任何数字,则偏移量将高于项目记录的数量。将所有内容放在一个页面上都会影响分页的目的,而且可能不是您正在寻找的解决方案。 – Steve 2013-06-19 06:10:02
这个计数查询是不是头顶? – 2017-02-09 06:27:34