分页插件kaminari
- 可以很方便支持I18N
- 可以很方便完成各种分页样式的定制
- 支持Rails 3.0.x,3.1, 3.2, 4.0, 4.1
安装
- 在Gemfile中增加一行gem 'kaminari'
- 运行bundle install 进行安装
- 执行rails g kaminari:config生成一个kaminari_config配置文件
- 执行rails g kaminari:views default 这样会创建**app/views/kaminari/ 文件夹,你可以对其进行自定义
default_per_page # 25 by default 缺省情况下的每页个数,默认为25
max_per_page # nil by default
window # 4 by default window / outer_window / left / right这四个参数都与分页显示有关系,特别是在总页数比较多的时候,该如何显示
outer_window # 0 by default
left # 0 by default
right # 0 by default
page_method_name # :paginate by default 分页方法的名称,如果你怕冲突(比如想很蛋疼地同时使用 will_paginate),可以修改它
param_name # :page by default 分页参数的参数名,默认为 param
使用方法
安装之后在**ActiveRecord** 和 view等中使用
1. 可以在controller上使用
@admin_customers = Kaminari.paginate_array(@users).page(params[:page]).per(@pagesize)(给数组分页)
2. 可以在model对象中使用 **.page()** 和 .per()这2个方法
每页10个,取第一页数据
User.page(2).per(10)
如果传给**.page()**方法的参数是 nil,则默认为1
User.page(params[:page])
3. 在 view 中使用,显示分页栏
<%= paginate @users %>
这时会生成这样会生成类似 « First ‹ Prev ... 2 3 4 5 6 7 8 9 10 ... Next › Last » 的样式
4. 还可以利用Ajax分页
<%= paginate @users, :remote=>true%>
分页界面定制
为了自定义分页的显示样式,首先要生成一些模板文件
rails g kaminari:views default
这样会创建 app/views/kaminari/ 文件夹,可以对其进行自定义(文件名不可以修改)
_paginator.html.erb 这是总的入口文件,可以通过修改它来调整显示的整体结构比如我不需要“首页”,”末页“这两个链接,那么我就在这个文件里面将对应的代码删除
_page.html.erb 对应页码链接
_first_page.html.erb / _last_page.html.erb 对应“首页”和“末页”的链接
_prev_page.html.erb / _next_page.html.erb 对应“上一页”和“下一页”的链接
_gap.html.erb 空隙的显示,默认是中间的省略号(...)
I18n
en:
views:
pagination:
first: "« First"
last: "Last »"
previous: "‹ Prev"next: "Next ›"
truncate: "..."
总页数方法:@users.num_pages
总件数方法:@users.total_count