kaminariでページネーション
kaminariを使ったページネーションのやり方。
①gem 'kaminari'
をGemfileに追加する。
②$ bundle install
する。
③追加したいindex.html.erbなど部分に<%= page_entries_info @モデル名 %>
.
.<%= paginate @モデル名 %>
を追加する。
たとえば。
<%= page_entries_info @projects %> <table class='table table-hover'> <thead> <tr> <th>ID</th> <th>発注者</th> <th>カテゴリ</th> <th>プロジェクト名</th> <th>ステータス</th> <th style='width: 200px;'></th> </tr> </thead> <tbody> <% @projects.each do |project| %> <tr> <td><%= project.id %></td> <td><%= link_to project.user_name, admin_user_path(project.user_id), target: '_blank' %></td> <td><%= project.category_name %></td> <td><%= project.name %></td> <td><%= project.status_i18n %></td> <td> <%= link_to '詳細', [:admin, project], class: 'btn btn-default' %> <%= link_to '編集', edit_admin_project_path(project), class: 'btn btn-primary' %> <%= link_to '削除', [:admin, project], method: :delete, data: { confirm: 'こちらのプロジェクトを削除しますか?' }, class: 'btn btn-danger' %> </td> </tr> <% end %> </tbody> </table> <%= paginate @projects %>
このような感じです。
④コントローラー編集
def index @projects = Project.page(params[:page]) end
のようにする。
⑤$ rails g kaminari:config
とするとkaminari の設定ファイルを編集することができ、
デフォルトではコメントアウトされて作成されているので
自分のしたいように編集してください。
Kaminari.configure do |config| config.default_per_page = 30 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
私はめんどいからこの二つだけw
⑥config/locales/ja.yml 編集
これはどっちでも良いと思います。
英語のままの「next」といかの表記でいい人はほっといて
日本に「次ページ」とかにしたい方は、
views: pagination: first: 先頭 last: 最終 previous: 前ページ next: 次ページ truncate: "..."
をついかすれば完成!!!♪
で、もしこの作業をgit をつかってしていて
ブランチを切り替えて違う作業をしてもどってきたら
no method error 'page'
みたいなのがでるかもしれないですが
その場合bundle install したら元に戻りました。
原因はわからないですが、gemをつかってるから
bundle installしたらいいのかなとおもってやってみたらなおりました
この本質的な理由もし教えてくださる方がいらっしゃったら
コメントいただけたらうれしいです。