我有很多视图,其中包含检查当前用户是否与正在查看的用户不同的元素等。例如,在用户显示页面上有一个允许用户关注其他用户的按钮,如果用户正在查看自己的个人资料,则不会显示。
<% 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) %>
...
我不想强迫别人登录或注册以查看索引或显示页面。我怎么能绕过这个?
答案 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 %>