允许未经身份验证的用户访问使用current_user的视图

时间:2017-06-07 05:13:08

标签: ruby-on-rails

我有很多视图,其中包含检查当前用户是否与正在查看的用户不同的元素等。例如,在用户显示页面上有一个允许用户关注其他用户的按钮,如果用户正在查看自己的个人资料,则不会显示。

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

问题出现了,如果您没有登录,则rails会抛出错误。

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) %>
  ...

我不想强迫别人登录或注册以查看索引或显示页面。我怎么能绕过这个?

1 个答案:

答案 0 :(得分: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 %>