will_paginate Gem を使用した Rails のページネーション

世界の回転はますます速くなり、この加速は私たちの生活のあらゆる面で明らかです。特にビジネスに関しては、スピードが重視されます。この猛烈な勢いで加速する中で唯一一定しているのは変動性であり、人々は時間を節約できるものに対して非常に親近感を持っています。 Ruby on Rails の人気は、他のプログラミング言語では完成するまでに数か月から数年かかるものを、Ruby on Rails では数週間から数日で構築できるという事実によるものです。では、Ruby on Rails はどのようにしてこれほど短期間でアプリケーションを構築できるのでしょうか?とりわけ、Ruby gem は、Ruby on Rails の開発オーバーヘッドを削減する上で最も重要な要因の 1 つです。これらの gem は、開発者がより迅速にアプリケーションを構築できるように、分類された再利用可能なコードのリストです。数多くの gem の中で最も重要な gem の 1 つは、ページネーション gem です。ページネーションは、Web アプリケーションの非常に重要な側面であり、ドキュメントを個別のページに分割するのに役立ちます。 Ruby on Rails では、「will_paginate」と呼ばれる gem を使用してデータを簡単にページネーションできます。 will_paginate ライブラリを使用すると、Rails アプリ (および他の Ruby フレームワーク) にページネーション機能を簡単に追加できます。 will_paginate は非常によく設計されたプラグインです。 ActiveRecord オブジェクトの統合に加えて、配列や任意のコレクションと統合できます。

will_paginate と Rails を統合する手順 :

ステップ1 : Gemfile に「gem will_paginate」を追加します。

Gemfile:

gem 'will_paginate', '~> 3.0'

ステップ2 : バンドルインストール

Rails プロジェクトの「バンドル インストール」を実行します。

バンドルのインストール:

このコマンドは、Ruby 環境に gem 'will_paginate' がインストールされていない場合はインストールする Rails アプリケーション ディレクトリで実行する必要があります。この gem が環境内ですでに利用可能な場合は、Rails アプリケーションに gem が使用されるだけです。

ステップ3 : 基本的な統合

ページネーションされた結果セットをクエリするモデルにページネーション パラメータを追加します。次に、アプリケーションにページネーションを追加しましょう。コントローラーを再度開き、以下のコードのように変更します。

コントローラーコード :

app/controllers/articles_controller.rb:

クラス ArticlesController < ApplicationController

デフォルトインデックス

@articles = Blog.paginate(:page => params[:page], :per_page => 10)

終わり

終わり

フロントエンド (.erb) にページネーション リンクを表示するために、後続のレコードのコレクションに必要なパラメーターを追加します。追加されるパラメータ:

  • current_page – ページ分割された結果データセットの現在のページ番号です。
  • total_entries – 指定された基準を満たすデータベース内のレコードの数
  • 制限 – ページ分割された結果データのページごとの制限
  • offset – 現在のページ分割されたデータ セット -> 現在のページを表示します

パラメーター :

  • :page – これはクエリ文字列で送信されるパラメータです。これに基づいて、どのレコードを取得するかが決定されます。
  • :per_page – これは、ページごとに取得する結果の数です。

コードを表示 :

app/views/articles/index.html.erb

<div class="”row" margin-twenty5-zero margin-b-zero pagination-row”>

<div class="”col-lg-8" col-md-8 col-sm-7 col-xs-6 padding-zero”>

  • <%= will_paginate(@articles,:previous_label => “«”, :next_label => “>>”,:class=>”small-font”,:outer_window => 1,:inner_window => 0) %>

</div>

<div class="”col-lg-4" col-md-4 col-sm-5 col-xs-6 pagination-info”>

<span class="”pull-right”"><%= page_entries_info(@articles) %></span>

</div>

</div>

標準ビューヘルパー :

WillPaginate::Collection のようなオブジェクトのページ リンクを表す HTML を返します。合計が 1 ページに満たない場合は、nil が返されます。

  • :class – 生成された DIV の CSS クラス名 (デフォルト: 「ページネーション」)
  • :previous_label – デフォルト: 「« 前」
  • :next_label – デフォルト: 「次へ」
  • :page_links – false の場合、前/次のリンクのみがレンダリングされます (デフォルト: true)
  • :inner_window – 現在のページの周囲に表示されるリンクの数 (デフォルト: 4)
  • :outer_window – 最初と最後のページの周囲にあるリンクの数 (デフォルト: 1)
  • :link_separator – ページの HTML 要素の文字列区切り文字 (デフォルト: シングルスペース)
  • :param_name – URL 内のページ番号のパラメータ名 (デフォルト: :page)
  • :params – ページネーションリンクを生成するときの追加パラメータ (例:controller => “foo”、:action => nil)
  • :renderer – リンクレンダラーのクラス名、クラスまたはインスタンス (Rails のデフォルト: WillPaginate::ActionView::LinkRenderer)
  • :container – ページネーション リンクの DIV コンテナのレンダリングを切り替えます。独自のページネーション マークアップをレンダリングする場合にのみ false に設定します (デフォルト: true)

will_paginate によって認識されないすべてのオプションは、ページネーション リンクのコンテナ要素の HTML 属性になります。

<%= will_paginate @posts, :style => 'color:blue' %>
page_entries_info(コレクション、オプション)
表示されたエントリ数と合計エントリ数を含むメッセージをレンダリングします。

<%= page_entries_info @posts %>
#=> 全 26 件中 6 ~ 12 件の投稿を表示しています

  • :model – モデルのクラスまたは文字列名 (デフォルト: collection.first.class)
  • :html – プレーンテキストを生成するには false に設定します (デフォルト: true)

ギットハブ: https://github.com/mislav/will_paginate

同様の記事を読む:

最新のアップデートを購読する

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

jaJapanese