Klog开发笔记——分页插件 Kaminari 介绍
Rails 2.x 中最常用的分页插件是 will_paginate ,这个相信大家都耳熟能详
不过到 Rails 3 以后,我发现一个更好选择,那就是 Kaminari
我选择它,主要是看中其直观灵活的界面定制功能,它不像 will_paginate 那样需要配置一大堆参数,而是采用 view 文件来进行配置,非常好用
安装
很简单,在 Gemfile 增加一行即可
gem 'kaminari', '~> 0.13.0'
常用法
ActiveRecord
装了插件以后,你可以在 model 对象上使用 .page() 和 .per() 这两个方法,就像 .where() 一样
- 每页10个,取第2页数据
User.page(2).per(10)
- 配合查询条件语句,取第三页数据,默认每页为25个
User.where(:status=>1).includes(:topics).page(3)
- 如果传给 .page() 方法的参数是 nil,则默认为1
User.page(params[:page])
View
在页面上,要显示分页的话,用它提供的 helper 方法即可
<%= paginate @users %>
这样会生成类似 « First ‹ Prev ... 2 3 4 5 6 7 8 9 10 ... Next › Last »
的 html
参数配置
全局参数配置
执行以下命令,会在 config\initializers 下生成一个配置文件 kaminari_config.rb
rails g kaminari:config
这个配置文件控制着 kaminari 的全局设置,有以下参数可以进行自定义
- default_per_page 缺省情况下的每页个数,默认为25
- page_method_name 分页方法的名称,如果你怕冲突(比如想很蛋疼地同时使用 will_paginate),可以修改它
- param_name 分页参数的参数名,默认为 param
- window / outer_window / left / right 这四个参数都与分页显示有关系,特别是在总页数比较多的时候,该如何显示
Model 配置
如果统一的 per_page 全局设置不能满足你的要求,你希望针对每一种 model 设置不同的 per_page ,那么可以这样
class User < ActiveRecord::Basepaginates_per 50 end
这样就省去你在每个 controller 中各自使用 .per() 方法了
I18N 语言
默认情况下, kaminari 生成的分页组件是这个样子
如果你想简单地修改其中的文字的话,可以通过修改相应的 locales 语言文件来实现
比如我的配置如下
views:pagination:first: "« 首页"last: "末页 »"previous: "« 上一页"next: "下一页 »"truncate: "..."
分页界面定制
修改默认界面
为了自定义分页的显示样式,首先要生成一些模板文件,执行以下命令
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 下新建了一个叫做 tiny 的子文件夹,并将外面的文件都拷贝进去
然后在 view 中这样写即可
<%= paginate @blogs, :theme=>'tiny' %>
这时候 kaminari 就会根据 tiny 子文件夹下的 view 来渲染分页界面了
资源
这是 Klog 项目中所自定义的两个分页界面,分别用于前台和后台,供参考
https://github.com/edokeh/klog/tree/master/app/views/kaminari
Klog开发笔记——分页插件 Kaminari 介绍相关推荐
- Bootstrap Paginator 分页插件参数介绍及使用
Bootstrap Paginator是一款基于Bootstrap的js分页插件,功能很丰富,个人觉得这款插件已经无可挑剔了.它提供了一系列的参数用来支持用户的定制,提供了公共的方法可随时获得插件状态 ...
- Kinect开发笔记之一Kinect详细介绍
毕业设计的课题我选择了结合Kinect和Unity3D开发体感游戏,这是我十分感兴趣的一个课题,所以做好当然责无旁贷.准备再写一系列Kinect的学习笔记,记录自己毕设一步一个脚印的历程. ...
- PythonNet开发笔记一、PythonNet介绍及安装
介绍 Python.NET ( pythonnet) 是一个包,它使 Python 程序员可以与 Windows 上的 .NET 4.0+ 公共语言运行时 (CLR) 和 Linux 和 OSX 上的 ...
- 流媒体服务器开发笔记(2)--RTCP协议介绍
http://blog.sina.com.cn/s/blog_53061af00100o2no.html ----------------------------------------------- ...
- 分页插件 - PageHelper的介绍和使用
PageHelper介绍 PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例如mysql. oracle.mariaDB.DB2.SQLite.Hs ...
- pagehelper插件oracle,带你学习最简单的分页插件PageHelper
引言: PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库, 例如mysql. oracle.mariaDB. DB2. SQLite.Hsqldb等. ...
- C#开发笔记之15-如何用C#获取某月最大天数?
本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#开发笔记之15-如何用C#获取某月最大天数? | .Net中文网. C#开发笔记概述 概述 本文介绍使用C#获取某月最大天数的4种 ...
- C#开发笔记之13-如何用C#分隔字符串并返回字符串数组?
本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#开发笔记之13-如何用C#分隔字符串并返回字符串数组? | .Net中文网. C#开发笔记概述 概述 本文介绍使用C#分隔字符串并 ...
- C#开发笔记之12-如何用C#统计子字符串出现的次数?
本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#开发笔记之12-如何用C#统计子字符串出现的次数? | .Net中文网. C#开发笔记概述 概述 本文介绍如何使用C#统计子字符串 ...
- MyBatis复习(八):MyBatis 分页插件 PageHelper
PageHelper是国人开源的一款MyBatis扩展插件,可以帮助完成自动分页功能.PageHelper自动分页插件使用非常简单,如果持久层框架用的是MyBatis,建议使用该分页插件. 引入分页插 ...
最新文章
- 安装python模块时,遇到error: Unable to find vcvarsall.bat
- tensorflow学习(4.loss函数以及正则化的使用 )
- 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09
- 如何在Linux下创建与解压zip, tar, tar.gz和tar.bz2文件 .
- 2021年程序员1月薪资大幅度上涨,你的2021有奔头了吗?
- 深入互联网广告中的出价模式(中) — 智能出价模式
- 超云将成为数据中心演化的下一个阶段
- asp.net core 系列之Performance的 Response compression(响应压缩)
- 回复邮件时如何不要邮件头_如何为阅读,点击和回复率达到100%的CEO设计一封冷邮件...
- 普通笔记本能运行Linux么,Windows ARM 笔记本电脑现在可以运行 Ubuntu
- 韩国巨型机器人曝光,走一步地动山摇
- 第一次立会(2019.3.24)
- PPT中均匀分布各图形(水平或垂直)
- oracle的简单命令
- 拓端tecdat|R语言基于协方差的SEM结构方程模型中的拟合指数
- JAVA构造方法与构造方法的执行原理简单理解(栈与堆)
- 如何增加架设传奇服务器,做为一个新手如何架设传奇
- Werid Tips
- wikisql 数据集解释_【Wikidata】维基数据详解
- 瑞萨单片机iap串口升级boot工程的构建-学习记录
热门文章
- 基于Echarts实现可视化数据大屏物流云大数据看板页面HTML模板
- 小葵花妈妈课堂之Nginx Rewirte
- 中国计算机学会青年计算机科技论坛
- 用matlab进行多项式通分,Matlab控制系统仿真基础
- 透过西安未来人工智能计算中心,看到AI不一样的未来
- 微积分:2.1导数中的中值定理
- 关于计算机系统的基本组成
- html+css+js制作520表白网页,全屏的爱心和表白语网页动画代码,浪漫的520爱心表白动画特效。...
- Beyong Compare4过期解决办法
- ios 拍照上传到服务器_iOS 上传图片到服务器