设计 – 无法在rails视图中显示登录或注销
我正在使用设计来进行基本身份validation。 当我去localhost:3000/users/sign_in
我将能够登录,或者当我登录时,如果我去那里,我将收到相应的消息“你已经登录了”。
但是, user_signed_in?
即使在成功登录后,也总是评估为假
"flash_#{name}" %>
我正在使用设计来进行基本身份validation。 当我去localhost:3000/users/sign_in
我将能够登录,或者当我登录时,如果我去那里,我将收到相应的消息“你已经登录了”。
但是, user_signed_in?
即使在成功登录后,也总是评估为假
"flash_#{name}" %>
这是config/application.rb
class ApplicationController < ActionController::Base protect_from_forgery with: :exception before_filter :authenticate_user! private def current_user @current_user ||= User.find(session[:user_id]) if session[:user_id] end helper_method :current_user end
我怎样才能获得user_signed_in?
是真实的? 无论我是否成功登录, current_user
也仍然是假的
这可能是因为您正在定义自己的current_user方法。 然后,这将覆盖Devise提供的那个。
如果你看一下user_signed_in的来源? 方法 ,您可以看到此方法使用当前用户(由Devise定义的用户)。 Devise可能不会将当前用户保存到会话[:user_id],这是您的方法正在检查的内容。 因此,当Devise在user_signed_in?中调用您的方法时,它总是返回false。
尝试从ApplicationController中删除当前用户方法,看看是否能解决问题。