日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分页插件Kaminari

發布時間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分页插件Kaminari 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

分頁插件Kaminari

http://www.xingishere.com/blogs/kaminari_gem

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::Base paginates_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??空隙的顯示,默認是中間的省略號(…)

注意文件不要改名,否則入口文件會找不到對應的子文件,不過如果你入口文件中將某個部分的代碼刪除的話,那么相應的子文件也可以刪掉

對數組分頁

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

Kaminari.paginate_array(a, total_count: 100).page(params[:page]).per(10)

其中total_count是數據總數

theme 功能

以上的方法可以用于修改默認的分頁界面,不過如果系統比較復雜,在不同的地方需要顯示不同的分頁界面該怎么辦?強大的 kaminari 還提供了 theme 的功能,而且實現很簡單,你只需要在 app/views/kaminari/ 下再新建子文件夾即可

例如我在 app/views/kaminari 下新建了一個叫做 tiny 的子文件夾,并將外面的文件都拷貝進去然后在 view 中這樣寫即可

<%= paginate @blogs, theme: tiny %>

這時候 kaminari 就會根據 tiny 子文件夾下的 view 來渲染分頁界面了

資源

這是 Klog 項目中所自定義的兩個分頁界面,分別用于前臺和后臺,供參考

總結

以上是生活随笔為你收集整理的分页插件Kaminari的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。