0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ログイン状態のユーザー・ログアウトユーザーに違うリンク先を見せる条件分岐

Posted at

#はじめに

↓ログイン状態のユーザーにはこの画面が見れるようにします
スクリーンショット 2021-06-30 11.53.18(2).png

↓ログアウト状態のユーザーにはこの画面が見れるようにします

スクリーンショット 2021-06-30 11.53.27(2).png

こうする理由としてはログアウトユーザーでも投稿ができてしまう事やログアウト状態のユーザーには新規登録かログインをして欲しいからです。
(ログインしてない状態でも、「投稿」ボタンの遷移先であるURLを直接入力すると、新規投稿ページにアクセスできてしまうのでそこはコントローラーアクションで設定します)

user_signed_in?メソッド

Gemのdeviseを導入しているため、使用できるメソッドです。

ログインしているかどうかの判定を行います。

ユーザーがログインしていればtrueを、ログアウト状態であればfalseを返します。

.rb
# ログイン状態のユーザー
user_signed_in?
#=> true

# ログアウト状態のユーザー
user_signed_in?
#=> false

このメソッドを**条件分岐(if)**と組み合わせると最初の画像と同じようになります。

.html.erb
<% if user_signed_in? %>
  # ログイン状態時の処理
 <% else %>
 # ログアウト状態時の処理
<% end %>
 <% if user_signed_in? %>
    <li><%= link_to current_user.nickname, edit_user_registration_path, class: "" %></li>
    <li><%= link_to 'ログアウト', destroy_user_session_path, method: :delete, class: "" %></li> 
    <%= link_to(new_review_path, class: '') do %>
       <span class='post-btn-text'>投稿</span>
       <i class="far fa-paper-plane"></i>
    <% end %>
   <% else %>
    <li><%= link_to 'ログイン', new_user_session_path, class: "" %></li>
    <li><%= link_to '新規登録', new_user_registration_path, class: "" %></li>
<% end %>
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?