Repolode
ddnexus

ddnexus/pagy

Rails、Sinatraなどの各種フレームワークで、OFFSET、KEYSET、検索、カレンダー方式のページネーションに対応する、プレーンなRuby向けの汎用ライブラリ。

スター
4,998
フォーク
447
未解決の Issue
3
最終コミット
22 時間前

これは何?

Pagyは、Railsに限らず、あらゆるコレクション型や実行環境で使えるRubyのページネーションgemです。OFFSET、COUNTISH、COUNTLESS、KEYSET、KEYNAV、SEARCH、CALENDARなど複数のページネーター方式を備え、データ量やアクセスパターンに合った方法を選べます。

レンダリングでは、Bootstrap、Bulma、または標準スタイルに対応したサーバーサイドのナビゲーションヘルパーを生成できます。また、コンテナ幅に合わせて表示されるクライアントサイドのナビゲーションコンポーネントも用意されています。JSON:API形式のネストされたクエリ文字列と、APIクライアント向けにページネーションのメタデータを含むJSONレスポンスにも対応しています。

Elasticsearch Rails、Meilisearch、Searchkick、Typesense Railsなどの検索バックエンド向けアダプターも含まれています。READMEでは、プロジェクトで使用するメソッドだけをオートロードする方法と、実行中のアプリ内でスタイルをプレビューできる組み込みの開発ツールパネルについて説明しています。

主な機能

  • 01OFFSET、KEYSET、COUNTLESS、CALENDARなど、複数のページネーション方式に対応。
  • 02Bootstrap、Bulma、標準スタイル向けのサーバーサイドナビゲーションヘルパーを提供。
  • 03コンテナ幅に合わせて表示が変わるクライアントサイドのナビゲーションコンポーネントを提供。
  • 04APIクライアント向けに、JSON:API形式のリンク構造とJSONメタデータを出力。
  • 05Elasticsearch Rails、Meilisearch、Searchkick、Typesense Rails向けのアダプターを提供。

ユースケース

  • BootstrapまたはBulmaのスタイルを使って、Railsアプリケーションにページ分割されたリストを追加する。
  • JSON:API形式のページネーションリンクを返すJSON APIを構築する。
  • RubyでElasticsearch、Meilisearch、またはTypesenseの検索結果をページ分割する。
  • カレンダーナビゲーションを使い、年、月、週、日単位で時系列データをページ分割する。

クイックスタート

  1. 1

    コントローラー(例: application_controller.rb)に Pagy::Method を include します

  2. 2

    pagy(:offset, Product.all) でコレクションをページネーションします

収録されている特集

トピック

#ruby#pagination#rails#jsonapi#search#web-framework#bootstrap#bulma#elasticsearch-rails#hanami

よくある質問

pagy とは?
Rails、Sinatraなどの各種フレームワークで、OFFSET、KEYSET、検索、カレンダー方式のページネーションに対応する、プレーンなRuby向けの汎用ライブラリ。 Pagyは、Railsに限らず、あらゆるコレクション型や実行環境で使えるRubyのページネーションgemです。OFFSET、COUNTISH、COUNTLESS、KEYSET、KEYNAV、SEARCH、CALENDARなど複数のページネーター方式を備え、データ量やアクセスパターンに合った方法を選べます。
pagy は無料で使えますか?ライセンスは?
pagy は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
pagy は今もメンテナンスされていますか?
活発にメンテナンス中。pagy の最終コミットは 2026年11月6日 です。
pagy は何に使えますか?
BootstrapまたはBulmaのスタイルを使って、Railsアプリケーションにページ分割されたリストを追加する。 JSON:API形式のページネーションリンクを返すJSON APIを構築する。 RubyでElasticsearch、Meilisearch、またはTypesenseの検索結果をページ分割する。 カレンダーナビゲーションを使い、年、月、週、日単位で時系列データをページ分割する。
pagy のインストール方法は?
コントローラー(例: application_controller.rb)に Pagy::Method を include します pagy(:offset, Product.all) でコレクションをページネーションします
pagy はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/ddnexus/pagy

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト