我接管了一个Rails项目,管理员可以在其中创建用户。 验证是通过devise gem完成的。
普通用户登录后,一切正常。 current_user
变量保留了我的用户。但是,当我尝试通过该链接<%= link_to "My profile", user_path(current_user) %>
访问用户的个人资料时,该链接指向User#show
。我收到current_user
为nil的错误消息。
我不明白为什么current_user
突然为零。
是因为在show动作中设置了@user变量?
#user_controller.rb
class UsersController < ApplicationController
load_and_authorize_resource
before_action :set_user, only:[:destroy, :edit, :show, :update, :check_bonus]
before_action :reset_session, except:[:show, :check_bonus]
def show
@user = User.find(params[:id])
end
private
def set_user
@user = User.find(params[:id])
end
end
我真的不知道该找什么。在某些时候,会话将恢复(session[:validated] = false
),但不能在User#show操作中恢复。
答案 0 :(得分:-1)
我实际上发现了这一点,我有另一个before_action
正在注销用户,而没有重定向到登录页面。
因此,没有current_user
。
因此,仅代码本身就是问题!