设计 – 无法在rails视图中显示登录或注销

我正在使用设计来进行基本身份validation。 当我去localhost:3000/users/sign_in我将能够登录,或者当我登录时,如果我去那里,我将收到相应的消息“你已经登录了”。

但是, user_signed_in? 即使在成功登录后,也总是评估为假

 
Welcome ! :delete %> :delete %>
"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中删除当前用户方法,看看是否能解决问题。