質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

229閲覧

データベースを複数ページに表示

lyzmfeqpxs54

総合スコア237

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2017/08/25 01:46

現在ページにデータベースを一覧にして単純にページに表示しています。日付のフォームは作り終え、以下の画像ような(データを20件ずつ区切りで表示できるようにする)表示をしたいと考えているのですが調べてもわからずこちらで質問させていただきました。

こういったページを作る場合どういったアプローチをすればよいのでしょうか。参考となるようなページ等ご教示いただくだけでも幸いです。

よろしくお願いいたします。

Ruby

1 2index.html.erb 3 4 <% @users.each do |user| %> 5 <div class="users-index-item"> 6 <div class="user-right"> 7 <%= user.name %> 8 <%= user.email %> 9 <%= user.xx %> 10 <%= user.yy %> 11 <%= user.zz %> 12 </div> 13 </div> 14 <% end %> 15

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

1ページにN件ずつ表示するという処理を「ページング」と言います。
「Rails ページング」でググるとだいたい出てきます。
will_paginateやkaminariというgemが有名です。

私はwill_paginateしか使った事がないので、will_paginateの例を出します。
will_paginateの導入は、
Gemfileにgem 'will_paginate'を追記して、bundle installを実行するだけです。

コントローラで@usersを取得する処理を書き替えます。

ruby

1@users = User.paginate(page: params[:page], per_page: 10) 2 3#並び順を指定したい場合は、paginateの前に付けます。 4@users = User.order(created_at: :desc).paginate(page: params[:page], per_page: 10)

こうすると、@users.each do .... では、per_pageで指定した10件だけがループされます。

.paginateをつけて実行すると、@usersに以下のメソッドが動的に追加されます(will_paginateの機能)。
@users.current_page
@users.next_page (次のページがなければnil)
@users.previous_page (前のページがなければnil)
@users.total_pages

ビューには、このように書きます。

rubu

1<% @users.each do |user| %> 2...いつものやつ 3<% end %> 4 5<!-- 各ページへのリンク --> 6<%= will_paginate @users %>

動作確認していないので、このままでは動かないかもしれませんが概要は伝わったと思います。

投稿2017/08/25 02:11

mingos

総合スコア4025

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lyzmfeqpxs54

2017/08/27 15:27

連絡が遅くなり申し訳ございません。mingos様にご教示いただいたようにGemをbundle installし、controllerとViewに書いたところ目的のようなページングを無事行うことができました。 本当にありがとうございます。 また何かありました際に色々とご教示いただければと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問