概要
サインアップ(ユーザー登録)、サインイン・サインアウト(ユーザー認証)、アクセス制御まで実現できたので、トップページを表示したときに登録済みユーザーの情報を表示させるように仮組みする。
コントローラー
pages
コントローラーのtop
アクションで、users
テーブルに登録された全ユーザーをオブジェクトとして取り出し、その名前とメールアドレスを一覧として表示させる。
1 2 3 4 5 6 7 |
class PagesController < ApplicationController before_action :authorize def top @users = User.all.order("id desc") end end |
処理概要は以下のとおり。
all
メソッド:モデルのクラスメソッドで、テーブルの全データをモデルインスタンスの配列として取り出すorder
メソッド:SQLのORDER BY
句を適用する- 引数は1つの文字列として与え、スペースで区切る
- 1つ目は並べ替えの基準とするカラム
- 2つ目は並べ替えの順序(
asc
:昇順・デフォルト、desc
:降順)
- 取り出した結果は、ビューで利用可能なようにインスタンス変数に格納する
ビュー
コントローラーで得られた@users
の要素を取り出し、テーブルとして出力。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<div class="top_page"> <h2>登録ユーザー一覧</h2> <div class="user_list"> <table> <% @users.each do |user| %> <tr> <td><%= user.name %></td> <td><%= user.email %></td> </tr> <% end %> </table> </div> </main> |
表示結果