我的应用程序中有一些实例根据 Devise 提供的 current_user
执行操作。例如:
Controller
class PostsController < ApplicationController
def like
@post.liked_by current_user
end
end
查看
...
<% if current_user.liked? post %>
<%= link_to "Unlike", unlike_post_path(current_user.to_param, post), method: :put, remote: true %>
<% else %>
<%= link_to "Like", like_post_path(current_user.to_param, post), method: :put, remote: true %>
<% end %>
我的问题是,跨站点如果没有 current_user
那么我会收到 NilClass 错误。我知道回调 before_filter :authenticate_user!
但想知道什么是最佳解决方案,其中操作在登录/未登录用户的 View 中仍然可见。
最佳答案
Devise 有一个帮助程序:
<% if user_signed_in? && current_user.liked?(post) %>
...
<% else %>
...
<% end %>
如果他们未登录,则永远不会评估条件的第二部分,因此不会出现 Nil 错误。
关于ruby-on-rails - 如果 Devise 的 current_user 为零,则创建后备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31432407/