🎉

RailsのKaminariについて‼️

2024/02/29に公開

Kaminarとは

Railsでページネーションを実装するためのGemです。

⚫︎補足
ページネーションはウェブページなどで大量のコンテンツを複数のページに分割して表示するための技術です。

引用   https://www.willgate.co.jp/promonista/pagination/

実装手順

Gem

Gemfileに以下のGemを導入してbundle installします。

gem 'kaminari'

kaminari_themes

kaminariのUIが変更できます。

https://github.com/amatsuda/kaminari_themes

見た目を変更するためのkaminari_themesの適用方法は以下のコマンドです。
bootstrap4で適用するなら

rails g kaminari:views bootstrap4

簡単な使い方

以下の処理はArticleモデルから全ての記事を取得し、ページネーションを適用します。

# GET /articles
  def index
     @articles = Article.all.page params[:page]
  end

.page(params[:page])ページネーションを適用し、特定のページの記事のみを取得します。1ページあたりに表示するレコード数を20にするには以下の書き方をします。

# GET /articles
  def index
     @articles = Article.all.page params[:page].per(20)
  end

Article.allで取得したデータを20件ずつページネーションされた状態で取得し、@articlesに格納され、viewで@articlesを表示すると、1ページあたり最大20件の記事が表示されます。

<h1>投稿する記事</h1>
    <%= paginate @articles %>

みたいな感じです。

メソッド(page、per、paginate)

  • pageメソッド
    pページ番号を指定してページネーションを行うためのもので、コントローラー内のアクションなどで使用されます。

  • perメソッド
    1ページあたりの表示レコード数を指定するためのもので、よくpageメソッドと組み合わせて使用され、Article.page(params[:page]).per(20)のように使用されます。

  • paginateメソッド
    viewでページネーションのためのページャーを表示するためのヘルパーメソッドです。
    viewの中でpaginateメソッドを使用することで、自動的にページャーが生成されます。

ex)

<%= paginate @articles %>

ページネーションされた記事のリストとページャーが表示されます。

資料

https://zenn.dev/yukihaga/articles/3d49208638e397

https://qiita.com/sazumy/items/1b3e0ad0a84ea119d0dc

Discussion