Rails4でページネーションを実装する

Rails4でページネーションを実装する

みなさんこんにちは、新人の意識高丸です。
昨日も初心者向けRuby勉強会gaienrbに参加してきました。
(http://www.circleaf.com/groups/13)
今回はページネーションを実装しました。

チュートリアルでは、will_paginateというgemで実装していました。
will_paginate.gemとbootstrap-will_paginate.gemの2つをインクルードして使用します。

Gemfileに以下の2行を追加し、

“`Gemfile
gem ‘will_paginate’, ‘3.0.4’
gem ‘bootstrap-will_paginate’, ‘0.0.6’
“`

bundle installを実行します。

“`
$ bundle install
“`

will_paginateをインクルードするとActiveRecordのモデルにpaginateメソッドが追加されます。

以下のようにモデルのpaginateメソッドをpageを引数にして実行すると、データベースから該当ページ分のデータ(デフォルトでは30ずつ)を取得してくれます。
例えば2ページ目であれば、31~60のデータを取得します。

“`コントローラの実装
def index
@users = User.paginate(page: params[:page])
end
“`

データの並び順を変える場合や、取得単位を変える場合は以下のようにします。

“`
def index
@users = User.paginate(:page => params[:page], :per_page => 10).order(‘id DESC’)
end
“`

per_pageの部分が取得単位を変えているところで、orderが並び順を変えているところです。

ビュー側では以下のようにwill_paginateを呼び出すことにより、ページのリンクを設置できます。

“`ビューの実装
<% provide(:title, ‘All users’) %>
<h1>All users</h1>
<%= will_paginate %>
<ul class=”users”>
<% @users.each do |user| %>
<li>
<%= gravatar_for user, size: 52 %>
<%= link_to user.name, user %>
</li>
<% end %>
</ul>
<%= will_paginate %>
“`

この他にも「kaminari」という有名なページネーションのgemがあります。
便利そうなので今度試してみようと思います。

TAG

  • このエントリーをはてなブックマークに追加
意識 高丸
エンジニア 意識 高丸 takamaru

Rubyについて日々勉強している新人エンジニアです。初心者向けRuby勉強会のレポートなどを投稿していきます。