Klog开发笔记——分页插件 Kaminari 介绍
Rails 2.x 中最常用的分頁插件是 will_paginate ,這個相信大家都耳熟能詳
不過到 Rails 3 以后,我發(fā)現(xiàn)一個更好選擇,那就是?Kaminari
我選擇它,主要是看中其直觀靈活的界面定制功能,它不像 will_paginate 那樣需要配置一大堆參數(shù),而是采用 view 文件來進行配置,非常好用
安裝
很簡單,在 Gemfile 增加一行即可
gem 'kaminari', '~> 0.13.0'常用法
ActiveRecord
裝了插件以后,你可以在 model 對象上使用 .page() 和 .per() 這兩個方法,就像 .where() 一樣
- 每頁10個,取第2頁數(shù)據(jù)
- 配合查詢條件語句,取第三頁數(shù)據(jù),默認(rèn)每頁為25個
- 如果傳給 .page() 方法的參數(shù)是 nil,則默認(rèn)為1
View
在頁面上,要顯示分頁的話,用它提供的 helper 方法即可
<%= paginate @users %>這樣會生成類似?? First ? Prev ... 2 3 4 5 6 7 8 9 10 ... Next ? Last ??的 html
參數(shù)配置
全局參數(shù)配置
執(zhí)行以下命令,會在 config\initializers 下生成一個配置文件 kaminari_config.rb
rails g kaminari:config這個配置文件控制著 kaminari 的全局設(shè)置,有以下參數(shù)可以進行自定義
- default_per_page 缺省情況下的每頁個數(shù),默認(rèn)為25
- page_method_name 分頁方法的名稱,如果你怕沖突(比如想很蛋疼地同時使用 will_paginate),可以修改它
- param_name 分頁參數(shù)的參數(shù)名,默認(rèn)為 param
- window / outer_window / left / right 這四個參數(shù)都與分頁顯示有關(guān)系,特別是在總頁數(shù)比較多的時候,該如何顯示
Model 配置
如果統(tǒng)一的 per_page 全局設(shè)置不能滿足你的要求,你希望針對每一種 model 設(shè)置不同的 per_page ,那么可以這樣
class User < ActiveRecord::Basepaginates_per 50 end這樣就省去你在每個 controller 中各自使用 .per() 方法了
I18N 語言
默認(rèn)情況下, kaminari 生成的分頁組件是這個樣子
如果你想簡單地修改其中的文字的話,可以通過修改相應(yīng)的 locales 語言文件來實現(xiàn)
比如我的配置如下
分頁界面定制
修改默認(rèn)界面
為了自定義分頁的顯示樣式,首先要生成一些模板文件,執(zhí)行以下命令
rails g kaminari:views default這樣會創(chuàng)建 app/views/kaminari/ 文件夾,里面的文件就是分頁顯示所需的 view ,你可以修改它們
-
_paginator.html.erb?這是總的入口文件,可以通過修改它來調(diào)整顯示的整體結(jié)構(gòu)
比如我不需要“首頁”,”末頁“這兩個鏈接,那么我就在這個文件里面將對應(yīng)的代碼刪除 -
_page.html.erb?對應(yīng)頁碼鏈接
-
_first_page.html.erb?/?_last_page.html.erb?對應(yīng)“首頁”和“末頁”的鏈接
-
_prev_page.html.erb?/?_next_page.html.erb?對應(yīng)“上一頁”和“下一頁”的鏈接
-
_gap.html.erb?空隙的顯示,默認(rèn)是中間的省略號(...)
注意文件不要改名,否則入口文件會找不到對應(yīng)的子文件,不過如果你入口文件中將某個部分的代碼刪除的話,那么相應(yīng)的子文件也可以刪掉
theme 功能
以上的方法可以用于修改默認(rèn)的分頁界面,不過如果系統(tǒng)比較復(fù)雜,在不同的地方需要顯示不同的分頁界面該怎么辦?
強大的 kaminari 還提供了 theme 的功能,而且實現(xiàn)很簡單,你只需要在 app/views/kaminari/ 下再新建子文件夾即可
例如我在 app/views/kaminari 下新建了一個叫做 tiny 的子文件夾,并將外面的文件都拷貝進去
然后在 view 中這樣寫即可
這時候 kaminari 就會根據(jù) tiny 子文件夾下的 view 來渲染分頁界面了
資源
這是 Klog 項目中所自定義的兩個分頁界面,分別用于前臺和后臺,供參考
https://github.com/edokeh/klog/tree/master/app/views/kaminari
總結(jié)
以上是生活随笔為你收集整理的Klog开发笔记——分页插件 Kaminari 介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCI驱动
- 下一篇: centos 缩减逻辑卷