用户可更改的分页最好使用will_paginate gem

时间:2016-03-05 04:55:12

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

我正在使用will_paginate gem并试图弄清楚如何制作它以便浏览网站的用户可以使用列表更改他/她想要每页的项目数,例如右侧的列表图片https://help.gumtree.com.au/documents/1353285762.jpg

(随机谷歌图片搜索)。

我也是rails的新手,所以如果你能告诉我每个代码的去向,我会非常感激。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

Gemfile中的

gem 'will_paginate'

在你想要分页的控制器中

class SomeController < ApplicationController
  def index
    @somethings = Model.all.paginate(page: params[:page], per_page: params[:per_page])
  end
end
在您的视图中

<%= select_tag :per_page, options_for_select([5,10,20,50],params[:per_page].to_i),
   :onchange => "if(this.value){window.location='?per_page='+this.value;}" %>

答案 1 :(得分:0)

使用will_paginate,您只需使用per_page选项:

@posts = Post.paginate(
  page: params[:page], 
  per_page: params[:per_page]
)

但是,在获取用户输入并将其传递给这样的SQL查询时,您应该小心谨慎。在这种情况下,谨慎的做法是将输入转换为整数:

irb(main):008:0> nil.to_i
=> 0
irb(main):009:0> "gobeligook".to_i
=> 0
per_page = params[:per_page].to_i.zero? ? params[:per_page].to_i : 30
@posts = Post.paginate(
  page: params[:page], 
  per_page: per_page
)