用户可更改的分页最好使用 will_paginate gem
User-changeable pagination preferably using will_paginate gem
我正在使用 will_paginate gem 并试图弄清楚如何制作它,以便浏览该网站的用户可以更改每页 he/she 想要的项目数量一个列表,就像这张图右边的列表
(随机 google 图片搜索)。
我也是 rails 的新手,所以如果您能告诉我每个代码的位置,我将不胜感激。感谢您的帮助。
在 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;}" %>
对于 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
)
我正在使用 will_paginate gem 并试图弄清楚如何制作它,以便浏览该网站的用户可以更改每页 he/she 想要的项目数量一个列表,就像这张图右边的列表
(随机 google 图片搜索)。
我也是 rails 的新手,所以如果您能告诉我每个代码的位置,我将不胜感激。感谢您的帮助。
在 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;}" %>
对于 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
)