【Rails】ページネーション「kaminari」で用意されているテーマ一覧とスタイルのカスタマイズ

2021年4月6日 12:08

はじめに

Railsアプリにページネーションを簡単に実装できるkaminariというGemには、BootstrapなどのCSSフレームワークのテーマ(テンプレートファイル)が用意されています。わざわざCSSフレームワークのクラスを手動で付与しなくても、専用コマンドを実行するだけで各テーマのテンプレートファイルをRailsアプリにフェッチすることができます。

本記事では、kaminariで使用できるテーマ一覧を画像付きで紹介します。また、CSSフレームワークではなく独自のスタイルにしたい場合に、kaminariで実際に生成されるタグやクラスを紹介します。

CSSフレームワークのテーマ一覧

CSSフレームワークのテーマをフェッチするには、以下のコマンドを実行します。

$ rails generate kaminari:views THEME

THEMEにCSSフレームワークの名称を指定します。THEMEを入力せずにコマンドを実行すると使用できるテーマの一覧が表示されます。

このコマンドはkaminari_themesというリポジトリから指定したテーマのテンプレートファイルをフェッチしています。連続してこのコマンドを実行していると、フェッチ回数がGitHubのレート制限の上限に達してしまい、それ以降コマンドが実行できなくなることがあります。

このコマンドを何度も実行することがあらかじめわかっている場合は、以下のリポジトリをクローンしてからテンプレートファイルをコピーするという方法をおすすめします。

$ git clone https://github.com/amatsuda/kaminari_themes.git
$ cd kaminari_themes/bootstrap4/
$ cp -rp app/views/ /path/to/rails/app/views/

Bootstrap

Bootstrapのテーマは、Bootstrap2、Bootstrap3、Bootstrap4の3種類がありますが、ここではBootstrap4のみを紹介します。

$ rails generate kaminari:views bootstrap4

Bulma

$ rails generate kaminari:views bulma

Foundation

Foundationのテーマは、FoundationとFoundation5の2種類がありますが、ここではFoundation5のみを紹介します。

$ rails generate kaminari:views foundation5

GitHub

GitHubはCSSフレームワークではありませんが、テーマとして用意されています。

$ rails generate kaminari:views github

Google

GoogleはCSSフレームワークではありませんが、テーマとして用意されています(使う人いるのか...?)。

$ rails generate kaminari:views google

Materialize

Materializeは前のページ、次のページのアイコンにGoogleのマテリアルアイコンを使用しています。Materialize CSSフレームワークと一緒にマテリアルアイコンも導入する必要があります。

$ rails generate kaminari:views materialize

Pure CSS

$ rails generate kaminari:views purecss

Semantic UI

$ rails generate kaminari:views semantic_ui

スタイルのカスタマイズ

CSSフレームワークではなく独自のスタイルにカスタマイズしたい場合は、kaminariによって生成されるタグやクラスにスタイルを適用します。以下は、Bootstrapのテーマを適用させた場合に生成されるHTMLです。

<nav>
  <ul class="pagination">
    <li class="page-item">
      <a class="page-link" href="/users">« First</a>
    </li>
    <li class="page-item">
      <a rel="prev" class="page-link" href="/users">‹ Prev</a>
    </li>
    <li class="page-item">
      <a rel="prev" class="page-link" href="/users">1</a>
    </li>
    <li class="page-item active">
      <a data-remote="false" class="page-link">2</a>
    </li>
    <li class="page-item">
      <a rel="next" class="page-link" href="/users?page=3">3</a>
    </li>
    <li class="page-item disabled">
      <a class="page-link" href="#"></a>
    </li>
    <li class="page-item">
      <a rel="next" class="page-link" href="/users?page=3">Next ›</a>
    </li>
    <li class="page-item">
      <a class="page-link" href="/users?page=9">Last »</a>
    </li>
  </ul>
</nav>

クラス一覧とその説明は以下の通りです。

クラス 説明
.pagination リスト全体に適用されるスタイルを設定。リストを横並びにするにはFlexboxを使う。
.page-item リストアイテムに適用されるスタイルを設定。
.active 現在のページ番号のリストアイテムに適用されるスタイルを設定。
.disabled リンクではないリストアイテムに適用されるスタイルを設定。
.page-link リストアイテムの中のリンクに適用されるスタイルを設定。

まとめ

ページネーションを実装するGemの中でkaminariはよく使われており人気があります。CSSフレームワークを使っている人も独自のスタイルを書いている人も本記事を参考にしてkaminariのページネーションをカスタマイズしていただければと思います。

関連記事

【Rails】ダウンロードしたフリーフォントをWebpackerを使って導入する方法
# はじめに Webサイトのデザインを彩るひとつの要素にフォントの種類があります。Google Fontsの登場により、様々なフォントが手軽に導入できるようになりました。しかし、世の中にはGoogle Fontsが提供するフォント以外にもたくさん [...]
2021年10月16日 13:26
【Rails】mimemagicに依存しているRailsアプリでbundle installコマンドが失敗する事象の対処法
# はじめに Railsアプリで`bundle install`コマンドを実行しようとしたところ、以下のエラーメッセージが出力されコマンドに失敗しました。 ``` Your bundle is locked to mimemagic (0 [...]
2021年10月14日 14:44
【Rails】macOSのアップデート後にrailsコマンドが失敗する事象の対処法
# はじめに 久しぶりにRailsアプリに手を入れようと思い、`rails server`コマンドを実行してRailsサーバーを立ち上げようとしたところ、エラーが出て起動に失敗してしまいました。 前回までの間にしたことの中で思い当たることと [...]
2021年10月14日 12:11
【Rails】Railsアプリのデバッグ《マルチデバイス篇》
# はじめに 近年のWebアプリはレスポンシブ対応が当たり前になっています。最低でもPCとスマートフォンに対応したデザイン、ときにはその中間のタブレットに対応したデザインなんかも作成する必要があります。 Webアプリの開発はPCを使って行う [...]
2021年5月23日 13:02
【Rails】Railsアプリのデバッグ《Better Errors篇》
# はじめに Railsアプリの開発中になんらかのエラーが発生すると、デフォルトでは以下のような画面が表示されます(画像をクリックすると拡大します)。 <a class="gallery" data-group="gallery" href [...]
2021年5月22日 19:42