2017-06-07 7 views
0

現在のユーザーが表示されているユーザーと同じでないかどうかをチェックする要素を持つビューが多数あります。たとえば、ユーザーの表示ページには、ユーザが別のユーザに従うことを可能にし、ユーザが自分のプロファイルを見ている場合には表示されない。認証されていないユーザーにcurrent_userを使用するビューへのアクセスを許可する

<% if current_user != @user %> 
    <div id="follow_form"> 
    <% if current_user.following?(@user) %> 
     <%= render 'users/unfollow' %> 
    <% else %> 
     <%= render 'users/follow' %> 
    <% end %> 
    </div> 
<% end %> 

ログインしていないと、レールにエラーが発生するという問題が発生します。

undefined method `id' for nil:NilClass 

    <% if current_user.id == @user.id %> 
    <%= link_to "Edit Profile", edit_user_registration_path(@user) %> 
    <% else %> 
    <%= link_to 'message', new_message_path(receiver_id: @user.id) %> 
    ... 

インデックスや表示ページを表示するには、ログインやサインアップを強制する必要はありません。どうすればこの問題を回避できますか?

+0

user_signed_inでしょうか?ユーザーがログインしているかどうかを確認してください。 –

+0

ありがとう、私はそれが私が寝る時間でなければならないと思う。 :)それを答えとして入れて、それを解決するとマークします。 – ddonche

答えて

1

あなたはそれを試してみてください:

<% if user_signed_in? %> 
<% if current_user != @user %> 
    <div id="follow_form"> 
    <% if current_user.following?(@user) %> 
     <%= render 'users/unfollow' %> 
    <% else %> 
     <%= render 'users/follow' %> 
    <% end %> 
    </div> 
<% end %> 
<% end %> 
関連する問題