10 : ユーザー管理をする②

前の章:ユーザー管理をする①

Header10 この章は、前章の「ユーザー管理①」の続きになります。
前章の内容がまだ終わっていない方は、こちらからお願いします。

3 : 「users」ページの作成

ここまででログインしないと、「posts」ページの一部が見れないような会員制ウェブページはできました。
せっかく「users」データベースも作ったので、次はこの「users」データベースのページを作りたいと思います。
この章で作る「users」データベースのページは、
  • show
  • ユーザーの情報を表示
  • index
  • 全てのユーザーの情報を表示
  • edit
  • 編集するユーザー情報の記入
  • update
  • 「edit」ページから受け取ったデータ通りに、ユーザー情報の更新
の4つになります。

この「users」データベースでも をやっていきます。
まずは「7つのページの設定」からやってみましょう!

 ① : 7つのページの設定


ページを設定するには「config > routes.rb」にどのページを使うかを設定します。
まずはSublime Textでmyappを開いて、「config > routes.rb」の内容を下のように変更しましょう。
※ Sublime Textの開き方はこちらを参考にして下さい

 routes.rb(7行目を追加)
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 61 62 Rails.application.routes.draw do devise_for :users resources :posts , :only => [:show, :index, :new, :create, :edit, :update, :destroy] resources :welcome, :only => [:index] root "welcome#index" resources :users, :only => [:show, :index, :edit, :update] # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". # You can have the root of your site routed with "root" # root 'welcome#index' # Example of regular route: # get 'products/:id' => 'catalog#view' # 省略 end

追加した内容は「posts」データベースの7つのページの設定の内容を「users」データベースに変えただけなので分かると思います。

「users」データベースの「show」「index」「edit」「update」のページを使うことをここで設定しています。
内容を見ると、3行目に今までに追加していなかった設定があると思います。

 routes.rb(3行目)
3 devise_for :users

この設定は「devise」で「users」データベースの枠組みを加えた下の入力

 ターミナル
1 rails g devise user

で「users」データベースを作った時に自動的に追加された設定で、
などの「devise」が作ったページを使うための設定になります。
ここまでで、「users」データベースの「show」「index」「edit」「updateをページで使うことを設定しました。
次は、データ操作を設定しましょう。


 ② : ページ表示・データ操作の設定


7つのページの設定ができたので、次はデータ操作とページ設定をしたいと思います。

データ操作とページ設定をするためには、
rails g controller データベース名
をターミナルで入力します。

「users」データベースでも同じ入力で設定ファイルを作ってみましょう!

 ターミナル
 Windowsをご利用の方は、「コマンドプロンプト」をご利用下さい。
1 rails g controller users

下のように表示されたでしょうか? Rails g controller users app > controllers > users_controller.rbapp > views > usersのフォルダが出来たと思うので、確認してみましょう!
出来ているのを確認できたらまず、どのページのデータ操作をするかを「users_controller」ファイルに設定しましょう。

 users_controller.rb(3〜13行目を追加)
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class UsersController < ApplicationController def show end def index end def edit end def update end end

※ 「posts」データベースでもやったことなので、詳しい説明はこちらを参考にして下さい
今回は
のページを設定するので、今回はこのような設定になりました。
※ new」「createは「devise」が登録ログインで作ってくれました。
今度は使うページを設定するファイルを保存しましょう(詳細はこちら)。
そのためにapp > views > users
  • show.html.erb
  • index.html.erb
  • edit.html.erb
  • update.html.erb
の4つのファイルを保存しましょう。
※ ファイルの保存の方法はこちらを参考にして下さい

これらのファイルに表示の設定をしていきます。

 ではそれぞれのデータ操作とページ設定をしましょう

 ⑴ : showページ


show」ページのデータ操作は、idにそったページを表示するものになり、下のように設定します。
※ 詳しい説明は「posts」データベースの「show」ページを参考にして下さい。

 users_controller.rb(4行目を追加)
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


3 4 5 def show @user = User.find(params[:id]) end

この@userをページで表示させます。
次に、app > views > users > show.html.erbに表示の設定を加えます。show.html.erbを下のように変更しましょう。
※ 詳しい説明は「posts」データベースの「show」ページを参考にして下さい

 show.html.erb
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


1 2 3 4 5 6 7 8 <h1>ユーザー情報</h1> <hr> <p>名前:<%= @user.family_name %><%= @user.first_name %>さん</p> <p>自己紹介:<%= @user.self_introduction %></p> <hr> <p><a href="/posts" class="btn btn-info">トップに戻る</a></p> <p><a href="/users" class="btn btn-primary">ユーザー一覧に戻る</a></p> <p><a href="/users/<%= @user.id %>/edit" class="btn btn-success">ユーザー情報を編集する</a>

※ 一回rails sで動かしたサーバーを「Control」と「c」を一緒に押して止めてから、もう一度rails sを入力して下さい。


 Windowsをご利用の方は、
 「rails s」で動かしたサーバーを「ctrl」と「c」を一緒に押して止めてから、もう一度「rails s」を入力して下さい。


できたら、「0.0.0.0:3000/users/1」を開いてみましょう!
 Windowsをご利用の方は、「localhost:3000/users/1」を開いてみて下さい。

下のようなページが表示されたでしょうか? Chrome users 1 まだ「users」データベースの
  • 「family_name」
  • 「first_name」
  • 「self_introduction」
に内容を保存していないので、内容は表示されません。


edit」「update」ページができたらデータを保存して内容を表示されるようにしましょう!
リンクのうち
  • 「users」データベースの「index」ページへのリンク

  • 1 <p><a href="/users" class="btn btn-primary">ユーザー一覧に戻る</a></p>
    ユーザー一覧に戻る
  • 「users」データベースの「edit」ページへのリンク

  • 1 <p><a href="/users/<%= @user.id %>/edit" class="btn btn-success">ユーザー情報を編集する</a>

    ユーザー情報を編集する

はまだ内容を加えていないページになります。
今はページに移動しても真っ白のページしか出てきませんが、これから内容を付け加えていきましょう。


 ⑵ : indexページ


index」ページのデータ操作は、「users」データベースから全てのデータを取り出すデータ操作になります。
※ 詳しい説明は「posts」データベースの「index」ページを参考にして下さい

 users_controller.rb(8行目を追加)
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


7 8 9 def index @users = User.all end

「users」データベースの全てのデータ@users」をページに表示させます。
次にapp > views > users > index.html.erbに表示の設定を加えます。index.html.erbを下のように変更しましょう。
※ 詳しい説明は「posts」データベースの「index」ページを参考にして下さい

 index.html.erb
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


1 2 3 4 5 6 7 <h1>ユーザー一覧</h1> <hr> <% @users.each do |u| %> <p><a href="/users/<%= u.id %>"><%= u.family_name %><%= u.first_name %>さん</a></p> <hr> <% end %> <a href="/posts" class="btn btn-info">トップに戻る</a>

※ 一回rails sで動かしたサーバーを「Control」と「c」を一緒に押して止めてから、もう一度rails sを入力して下さい。


 Windowsをご利用の方は、
 「rails s」で動かしたサーバーを「ctrl」と「c」を一緒に押して止めてから、もう一度「rails s」を入力して下さい。


できたら、「0.0.0.0:3000/users」を開いてみましょう!
 Windowsをご利用の方は、「localhost:3000/users」を開いてみて下さい。

下のようなページが表示されたでしょうか? Chrome users こっちでもfamily_name」と「first_nameに内容が入っていないので、「さん」としか表示されていませんね。



edit」ページのデータ操作は、編集するデータを選択します。
下のように設定しましょう!
※ 詳しい説明は「posts」データベースの「edit」ページを参考にして下さい

 users_controller.rb(12行目を追加)
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


11 12 13 def edit @user = User.find(params[:id]) end

この@user」の情報を記入する入力欄送信ボタンを設定します。
次にapp > views > users > edit.html.erbに設定を加えます。edit.html.erbを下のように変更します。
※ ページの説明は「posts」データベースの「edit」ページを参考にして下さい
※ 入力欄のclassなどについてはBootstrapの説明を参考にして下さい

 edit.html.erb
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


1 2 3 4 5 6 7 8 9 10 11 12 13 14 <h1>ユーザー情報を編集する</h1> <hr> <%= form_for @user do |f| %> <p>名字</p> <%= f.text_field :family_name, :class => "form-control my-form" %> <p>名前</p> <%= f.text_field :first_name, :class => "form-control my-form" %> <p>自己紹介</p> <%= f.text_area :self_introduction, :class => "form-control my-form" %> <hr> <%= f.submit "登録する", :class => "btn btn-primary" %> <% end %> <hr> <a href="/users/<%= @user.id %>" class="btn btn-info">ユーザー情報に戻る</a>

※ 一回rails sで動かしたサーバーを「Control」と「c」を一緒に押して止めてから、もう一度rails sを入力して下さい。


 Windowsをご利用の方は、
 「rails s」で動かしたサーバーを「ctrl」と「c」を一緒に押して止めてから、もう一度「rails s」を入力して下さい。


できたら、「0.0.0.0:3000/users/1/edit」を開いてみましょう!
 Windowsをご利用の方は、「localhost:3000/users/1/edit」を開いてみて下さい。

下のようなページは表示されたでしょうか? Chrome users 1 edit before 入力欄もできたので、次はデータの更新をやってみましょう!



update」ページのデータ操作は、「edit」ページから受け取ったデータを更新します。
下のように設定しましょう。
※ 詳しい説明は「posts」データベースの「updateをページを参考にして下さい。

 users_controller.rb
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


15 16 17 18 def update @user = User.find(params[:id]) @user.update(params.require(:user).permit(:first_name, :family_name, :self_introduction)) end

更新するデータを選択して、「edit」ページで記入したデータ通りにデータを更新します。

また変なデータ(idやemailなど)を更新されることを防ぐために、更新できるデータを「users」データベースの
  • family_name
  • first_name
  • self_introduction
だけに設定しています。

次にapp > views > users > update.html.erbに設定を加えます。update.html.erbを下のように変更します。
※ 詳しい説明は「posts」データベースの「updateをページを参考にして下さい。

 update.html.erb
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


1 2 3 4 5 6 7 8 <h1>ユーザー情報を変更しました。</h1> <hr> <p>名前:<%= @user.family_name %><%= @user.first_name %>さん</p> <p>自己紹介:<%= @user.self_introduction %></p> <hr> <p><a href="/users/<%= @user.id %>" class="btn btn-primary">ユーザー情報に戻る</a></p> <p><a href="/users/<%= @user.id %>/edit" class="btn btn-success">ユーザー情報の編集に戻る</a></p> <p><a href="/posts" class="btn btn-info">トップに戻る</a></p>

※ 一回rails sで動かしたサーバーを「Control」と「c」を一緒に押して止めてから、もう一度rails sを入力して下さい。


 Windowsをご利用の方は、
 「rails s」で動かしたサーバーを「ctrl」と「c」を一緒に押して止めてから、もう一度「rails s」を入力して下さい。


できたら、「0.0.0.0:3000/users/1/edit」を開いてみましょう!
 Windowsをご利用の方は、「localhost:3000/users/1/edit」を開いてみて下さい。

 開けたら「登録する」ボタンを押しましょう。 Chrome users 1 edit 変更完了ページに移動したでしょうか? Chrome users 1 update ページが出てきたら、0.0.0.0:3000/users/1を開いてみましょう!
 Windowsをご利用の方は、「localhost:3000/users/1」を開いてみて下さい。 Chrome users 1 after 編集したデータで「show」ページは表示されたでしょうか?



最後にログインしていないとページを見れないようにします。
下のように設定をしましょう。
※ 詳しい説明はログイン機能を参考にして下さい

 users_controller.rb(3行目を追加)
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


1 2 3 4 5 6 7 8 class UsersController < ApplicationController before_action :authenticate_user!, :only => [:show, :index, :edit, :update] def show @user = User.find(params[:id]) end # 省略

今回は、「users」データベースの「show」「index」「edit」「update」ページはログインしないと見れないように設定しました。


ここまでで「users」データベースのページの設定は完了しました。

復習の内容なのですごく難しい部分は少なかったと思います。
次は便利にするために上のバーに「users」ページへのリンクを加えてみましょう。


 ③ : navigation-barに「users」ページへのリンクを加える


ここまでで、「users」データベースのページを作りました。
最後に上についているバー・navigation-barusers」ページへのリンクを追加しましょう。
ログインしていない時には「ログインする」「登録する」リンクChrome users sign in nav ログインしている時には「ユーザー一覧」「ユーザー情報」「新しく投稿する」「ログアウト」リンクChrome posts all nav after login 表示させるように設定してみましょう。

 ⑴ : 「users」ページへのリンクを加える


まずは上のバー・navigation-barに、「users」ページへのリンクを追加したいと思います。

 リンクを設定するにあたって、まず「users」の「index」ページへのリンク「ユーザー一覧」はどの設定すればいいでしょうか?


1 <a href="/users">ユーザー一覧</a>

まずは、このusers」の「index」ページへのリンクをnavigation-barに設定しましょう。

 application.html.erb(27行目を追加)
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


23 24 25 26 27 28 29 30 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li><a href="/users/sign_up">登録する</a></li> <li><a href="/users/sign_in">ログインする</a></li> <li><a href="/users">ユーザー一覧</a></li> <li><a href="/posts/new">新しく投稿する</a></li> </ul> </div>

これで好きなページを開いてみてください。上のバーに「ユーザー一覧」へのリンクが追加されたでしょうか?

次は「users」の「show」ページへのリンクを追加してみましょう!
この「users」の「show」ページへのリンクは、ログインしている会員の情報ページに移動させる必要があります。
では、ログインしている会員の情報はどのように取得すればいいのでしょうか?

これは「devise」が作ってくれる設定で、
current_user
「<% %>」(もしくは「<%= %>」)タグの中に設定することで、現在ログインしているユーザーの情報を取得することができます。

これを使えば、例えば現在ログインしている会員の「first_name」を表示させるなら、

1 <p><%= current_user.first_name %></p>

で設定することができます。

この「current_user」を使って、navigation-barに現在ログインしている会員ページへのリンクを追加してみましょう。

 application.html.erb(28行目を追加)
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


23 24 25 26 27 28 29 30 31 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li><a href="/users/sign_up">登録する</a></li> <li><a href="/users/sign_in">ログインする</a></li> <li><a href="/users">ユーザー一覧</a></li> <li><a href="/users/<%= current_user.id %>">ユーザー情報</a></li> <li><a href="/posts/new">新しく投稿する</a></li> </ul> </div>

変更ができたら、好きなページを開いてみましょう。上のバーに「ユーザー情報」のリンクが追加されたでしょうか? Chrome posts all nav add users 追加されていたらリンクをクリックしてみましょう。会員の情報ページ(0.0.0.0:3000/users/1)に移動できたでしょうか?

今回は、

28 <li><a href="/users/<%= current_user.id %>">ユーザー情報</a></li>

で、会員に応じたリンクの設定をしています。

 このように現在ログインしている会員の情報は
current_user
で取得することができます。
最後にログアウト」のリンクを設定してみましょう。
ログアウトの設定は、

1 <%= link_to "表示する文字列", destroy_user_session_path, :method => :delete %>

で設定します。
とりあえずコピペで追加してみましょう。

 application.html.erb(30行目に追加)
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


23 24 25 26 27 28 29 30 31 32 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li><a href="/users/sign_up">登録する</a></li> <li><a href="/users/sign_in">ログインする</a></li> <li><a href="/users">ユーザー一覧</a></li> <li><a href="/users/<%= current_user.id %>">ユーザー情報</a></li> <li><a href="/posts/new">新しく投稿する</a></li> <li><%= link_to "ログアウト", destroy_user_session_path, :method => :delete %></li> </ul> </div>

変更が完了したら、好きなページで上のバー(navigation-barを確認してみましょう。 Chrome posts 1 nav add logout これでとりあえず、全ての設定できるリンクは設定できました。


 ⑵ : user_signed_in?


まずは作ったばっかりの「ログアウト」のリンクをクリックしてみましょう。ログアウトはできるでしょうか?

押したら下のようなページが出てくるのではないかと思います。 Chrome posts after logout これはログアウトをしてログインしている会員の情報がないのに、「current_user」でログインしている会員の情報を取得しようとして出てくるエラーページです。

ログアウトはできたんですが、このようなエラーページが出てきてしまってはどうしようもないですね。
このようなエラーがあるので、ログインしている時とログアウトしている時で表示を変更する必要があります。

  • ログインしている時

  • 「ユーザー一覧」「ユーザー情報」「新しく投稿する」「ログアウト」のリンクを表示する Chrome posts all nav after login
  • ログアウトしている時

  • 「ログインする」「登録する」のリンクを表示する Chrome users sign in nav

ログインをしているかしていないかで表示を変えるには、ログインの通知で使った
<% if 条件 %>
  内容
<% end %>
を使います。

ユーザーがログインしているかどうかは「devise」の設定で、
user_signed_in?
で条件にあっているかどうかを判定します。

では、この「user_signed_in?」と「<% if %>」を使って、
ログインしている時にだけ「ユーザー一覧」「ユーザー情報」「新しく投稿する」「ログアウト」のリンクを表示する設定
を加えてみます。


 application.html.erb(25、30行目を追加)
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


21 22 23 24 25 26 27 28 29 30 31 32 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li><a href="/users/sign_up">登録する</a></li> <li><a href="/users/sign_in">ログインする</a></li> <% if user_signed_in? %> <li><a href="/users">ユーザー一覧</a></li> <li><a href="/users/<%= current_user.id %>">ユーザー情報</a></li> <li><a href="/posts/new">新しく投稿する</a></li> <li><%= link_to "ログアウト", destroy_user_session_path, :method => :delete %></li> <% end %> </ul> </div>

※ 一回rails sで動かしたサーバーを「Control」と「c」を一緒に押して止めてから、もう一度rails sを入力して下さい。


 Windowsをご利用の方は、
 「rails s」で動かしたサーバーを「ctrl」と「c」を一緒に押して止めてから、もう一度「rails s」を入力して下さい。



もう一度同じページを読み込んでみましょう。 Chrome posts root after logout 今回は普通にページが出てきたのではないでしょうか?
もう一度ログインしてみましょう。
下のようにログインはできたでしょうか? Chrome posts root after login こう見るとログインしたのに、まだ「ログインする」「登録する」のリンクが残っていますね。
これも<% if %>の条件を使って消しちゃいましょう。

条件にあうものは
<% if 条件 %>
  内容
<% end %>
で表示させましたが、逆に条件にあわないものはこの続きに
<% if 条件 %>
  内容(条件に合ってた時に表示)
<% else %>
  内容(条件に合ってなかった時に表示)
<% end %>
を指定することで表示させることができます。

では、ログインして会員に「登録する」「ログインする」のリンクを見せないようにしたいと思います。

 application.html.erb(28〜30行目を追加)
※ 半角英数字で入力。変更が完了したら「Command」と「s」を一緒に押して内容を保存して下さい。
 Windowsをご利用の方は、「ctrl」と「s」を一緒に押して内容を保存して下さい。


21 22 23 24 25 26 27 28 29 30 31 32 33 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <% if user_signed_in? %> <li><a href="/users">ユーザー一覧</a></li> <li><a href="/users/<%= current_user.id %>">ユーザー情報</a></li> <li><a href="/posts/new">新しく投稿する</a></li> <li><%= link_to "ログアウト", destroy_user_session_path, :method => :delete %></li> <% else %> <li><a href="/users/sign_up">登録する</a></li> <li><a href="/users/sign_in">ログインする</a></li> <% end %> </ul> </div>

※ 一回rails sで動かしたサーバーを「Control」と「c」を一緒に押して止めてから、もう一度rails sを入力して下さい。


 Windowsをご利用の方は、
 「rails s」で動かしたサーバーを「ctrl」と「c」を一緒に押して止めてから、もう一度「rails s」を入力して下さい。



変更ができたら、もう一度ログインした状態で好きなページを開いてみましょう。 Chrome posts all nav after login ログインする」「登録するのリンクは消えたでしょうか?
消えてたら、もう一度ログアウトしてみましょう。 Chrome users sign in nav ログインしていない時の上のバーの表示も大丈夫でしょうか?
最後に内容のまとめをしたいと思います



ここではnavigation-barの設定をログインしているかしていないかで変更した。
その設定をするために、以下の3つの設定を使った。
  • current_user(ログインしている会員の情報を取得)
  • user_signed_in?(会員がログインしているか判定)
  • <% else %>(条件にあわない場合表示)
それぞれについて説明する。

設定した内容はこちらを参考にしてみて下さい
  • current_user

  • 「devise」の設定でもしログインしている会員の情報を取って来たければ、
    current_user
    
    を「<% %>」「<%= %>」タグの中に設定する。

    1 <li><a href="/users/<%= current_user.id %>">ユーザー情報</a></li>

  • user_signed_in?

  • 「devise」の設定でログインしているかどうかの判定をしたいなら、
    user_signed_in?
    
    を「<% %>」タグの中に設定する。

    1 <% if user_signed_in? %>

  • <% else %>

  • <% if 条件 %>
    
    で条件にそった表示をする時に、条件から外れたものを表示させる時に使う。

    1 2 3 4 5 6 <% if user_signed_in? %> <li><%= link_to "ログアウト", destroy_user_session_path, :method => :delete %></li> <% else %> <li><a href="/users/sign_up">登録する</a></li> <li><a href="/users/sign_in">ログインする</a></li> <% end %>

ここまでで「users」ページを設定することができました。
最後にまとめをしましょう。

設定した内容はここにまとめてあるので見てみて下さい



この章では、前章までで設定をした「devise」の「users」データベースを使ってページを作りました。

設定した内容はこちらを参考にしてみて下さい
「users」ページの設定のために、まずどのページを使うかの設定をした。
次にそれぞれのページでページ表示・データ操作の設定をした。

ページの設定も終わったところで、
  • current_user
  • user_signed_in?
  • <% else %>
を使って(詳細はこちら)を使って、上のバーを設定した。
ここまで会員情報も見ることができるようになりました。

次は投稿の「posts」データベースに会員情報の枠組みを追加して、ログインしている会員の情報で新しい投稿ができるようにしましょう。