在更新 HAML(从 4.0.0 到 4.0.1)后,我的 Devise 辅助方法出现错误。这可能会触发错误,不确定。
诸如 Devise 辅助方法user_signed_in?
正在工作(尽管我认为它没有),但是该方法current_user
不是。引发的此错误是undefined method name for nil
在current_user.name.blank?
.
这是我的应用程序控制器:
class ApplicationController < ActionController::Base
before_filter :authenticate_user!
protect_from_forgery
rescue_from CanCan::AccessDenied do |exception|
flash[:alert] = "Access denied."
redirect_to items_path
end
end
这是我的应用程序视图(HAML):
!!! 5
%html
%head
%title Levitas secondhand
= stylesheet_link_tag 'application', media: 'all'
= javascript_include_tag 'application'
= csrf_meta_tags
%body
.container
%p{class: 'notice notice-block'}= notice
%p{class: 'alert alert-block'}= alert
- if signed_in?(:user)
Ingelogd als
%strong
- if current_user.name.blank?
= link_to current_user.email, current_user
- else
= link_to current_user.name, current_user
|
- if current_user.provider == nil
= link_to 'Account bewerken', edit_user_registration_path
|
= link_to "Uitloggen", destroy_user_session_path, method: :delete
- else
= link_to "Nieuwe gebruiker", new_user_registration_path
|
= link_to "Inloggen", new_user_session_path
|
= link_to "Inloggen met Facebook", user_omniauth_authorize_path(:facebook)
在better_errors 的实时 shell 中current_user
返回nil
,所以我可以想象为什么我得到错误name
是nil
. 但是这种方法总是有效的?!
我试图将其更改为current_user.blank?
有效的,但随后在下一行中出现相同的错误(如预期的那样)email
is nil
.
我能做些什么?