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のライブシェルでcurrent_user
返さnil
れるので、エラーが発生する理由をイメージできname
ますnil
。しかし、この方法は常に機能しましたか?!
動作するように変更しようとしましたがcurrent_user.blank?
、次の行で同じエラー(予想どおり)が発生します。email
nil
私に何ができる?