ruby on rails中的分页插件Kaminari

1.安装
在Gemfile中增加一行

gem 'kaminari'

然后启动bundler

$ bundle install

2.查看kaminari的配置文件
执行以下命令,会在 config\initializers 下生成一个配置文件kaminari_config.rb

$ rails g kaminari:config

查看kaminari_config.rb内容如下

Kaminari.configure do |config|
  # config.default_per_page = 25
  # config.max_per_page = nil
  # config.window = 4
  # config.outer_window = 0
  # config.left = 0
  # config.right = 0
  # config.page_method_name = :page
  # config.param_name = :page
end

这个配置文件控制着 kaminari 的全局设置,有以下参数可以进行自定义

default_per_page 缺省情况下的每页个数,默认为25
page_method_name 分页方法的名称
param_name 分页参数的参数名,默认为 page
window / outer_window / left / right 这四个参数都与分页显示有关系

3.kaminari常用方法
装了插件以后,可以在 model 对象上使用 .page() 和 .per() 这两个方法,就像 .where() 一样,例如:

每页10个,取第2页数据
Event.page(2).per(10)  
配合查询条件语句,取第三页数据,默认每页为25个
Event.where(:status=>1).includes(:topics).page(3)
如果传给 .page() 方法的参数是 nil,则默认为1
Event.page(params[:page])

4.Model 配置

如果统一的 per_page 全局设置不能满足你的要求,你希望针对每一种 model 设置不同的 per_page ,那么可以这样

class Event < ActiveRecord::Base
  paginates_per 5
end

这样就省去你在每个 controller 中各自使用 .per() 方法了

def index
        @events = Event.page(params[:page]).per(5)
    end

5.View中的使用

在页面上,要显示分页的话,用它提供的 helper 方法即可

<%= paginate @Event %>

这样会生成类似 « First ‹ Prev ... 2 3 4 5 6 7 8 9 10 ... Next › Last » 的 html
如果你想修改其中的文字的话,可以通过修改相应的config/ locales 下的语言文件en.yml来实现
例如:在默认语言en:之后添加

 views:
    pagination:
      first: "&laquo; 首页"
      last: "末页 &raquo;"
      previous: "&laquo; 上一页"
      next: "下一页 &raquo;"
      truncate: "..."
« 首页 ‹ 上一页 ... 2 3 4 5 6 7 8 9 10 ... 下一页 › 末页 »

6.分页界面定制
修改默认界面

为了自定义分页的显示样式,首先要生成一些模板文件,执行以下命令

$ rails g kaminari:views default

这样会创建 app/views/kaminari 文件夹,里面的文件就是分页显示所需的 view ,你可以修改它们

_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 空隙的显示,默认是中间的省略号(...)

注意文件不要改名,否则入口文件会找不到对应的子文件,不过如果你入口文件中将某个部分的代码删除的话,那么相应的子文件也可以删掉
theme 功能

以上的方法可以用于修改默认的分页界面,不过如果系统比较复杂,在不同的地方需要显示不同的分页界面该怎么办?
强大的 kaminari 还提供了 theme 的功能,而且实现很简单,你只需要在 app/views/kaminari/ 下再新建子文件夹即可

例如我在 app/views/kaminari 下新建了一个叫做 minikm 的子文件夹,并将外面的文件都拷贝进去
然后在 view 中这样写即可

<%= paginate @events, :theme=>'tiny' %>

这时候 kaminari 就会根据 minikm 子文件夹下设置的view 来渲染分页界面了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值