分頁外掛程式Kaminari

2021-07-15 14:36:11 字數 1856 閱讀 4634

rails 2.x 中最常用的分頁外掛程式是 will_paginate ,這個相信大家都耳熟能詳

不過到 rails 3 以後,我發現乙個更好選擇,那就是  kaminari

我選擇它,主要是看中其直觀靈活的介面定製功能,它不像 will_paginate 那樣需要配置一大堆引數,而是採用 view 檔案來進行配置,非常好用

很簡單,在 gemfile 增加一行即可

gem 'kaminari', '~> 0.13.0'
activerecord

裝了外掛程式以後,你可以在 model 物件上使用 .page() 和 .per() 這兩個方法,就像 .where() 一樣

user

.page(2).per(10)

user

.where(status: 1

).includes(:topics).page(3)

user.page(params[:page])
view

在頁面上,要顯示分頁的話,用它提供的 helper 方法即可

%>

這樣會生成類似 « first ‹ prev … 2 3 4 5 6 7 8 9 10 … next › last » 的 html

全域性引數配置

執行以下命令,會在 config\initializers 下生成乙個配置檔案 kaminari_config.rb

rails

gkaminari

:config

這個配置檔案控制著 kaminari 的全域性設定,有以下引數可以進行自定義

model 配置

如果統一的 per_page 全域性設定不能滿足你的要求,你希望針對每一種 model 設定不同的 per_page ,那麼可以這樣

class

user

< activerecord::base paginates_per 50 end

這樣就省去你在每個 controller 中各自使用 .per() 方法了

預設情況下, kaminari 生成的分頁元件是這個樣子

如果你想簡單地修改其中的文字的話,可以通過修改相應的 locales 語言檔案來實現比如我的配置如下

views:

pagination:

first: 首頁

last: 末頁

truncate: ...

修改預設介面

為了自定義分頁的顯示樣式,首先要生成一些模板檔案,執行以下命令

rails g kaminari:views default
注意檔案不要改名,否則入口檔案會找不到對應的子檔案,不過如果你入口檔案中將某個部分的**刪除的話,那麼相應的子檔案也可以刪掉

對陣列分頁

上面所述的都是對activerecord分頁,實際工作中經常出現需求對陣列分頁,kaminari是實現了這個功能的

kaminari.paginate_array(a, total_count: 100).page(params[:page]).per(10)
其中total_count是資料總數

theme 功能

這時候 kaminari 就會根據 tiny 子資料夾下的 view 來渲染分頁介面了

這是 klog 專案中所自定義的兩個分頁介面,分別用於前台和後台,供參考

使用kaminari實現分頁

使用kaminari實現分頁 github位址 1 gem kaminari 執行bundle install,之後就會獲得一些方法。2 控制器 我想說的是,這個分頁只針對模型並不針對模型.all之後形成的陣列,以前都會通過.all獲得所有資料,然後在分頁,這種方式解決方式為重新寫了分頁檔案 網上有...

jquery table分頁外掛程式

使用方法 2 新建js,我的為page.js,放入以下 jquery.extend else else var maxright currentpage center 1 if maxright allpage else else left currentpage center right left...

分頁外掛程式彙總

jpaginate是基於jquery的分頁外掛程式,很輕量,沒有不論什麼侵入性,當然所能做的也就很少.其實它的作用不過提供乙個好看的分頁樣式,只提供乙個觸發事件.可是輕量帶來了巨大的靈活性,讓它能夠提供不論什麼內容的分頁服務.官方站點為站點為 該專案好像到2009年就已經沒人再更新了,可是仍然相容如...