更新HAML(從4.0.0到4.0.1)後,我的設計輔助方法出現錯誤。這可能引發錯誤,不確定。設計輔助方法(current_user)返回零
設計幫手方法,如user_signed_in?
正在工作(雖然我沒有在我看來),但方法current_user
不是。在current_user.name.blank?
期間引發的此錯誤是undefined method name for nil
。
這是我的應用程序控制器:
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):在better_errors的外殼帶電
!!! 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)
的current_user
回報nil
,這樣我就可以像爲什麼我收到的錯誤是name
是nil
。但這種方法一直有效?!
我試圖將其更改爲current_user.blank?
這是可行的,但接下來的行中出現相同的錯誤(如預期),說email
是nil
。
我該怎麼辦?
它返回什麼? 'current_user.blank?'或者** true **或者** false ** – 2013-03-22 06:47:26
當使用cancan時,你可以在控制器中執行load_and_authorize_resource,這也確保了身份驗證的發生,你使用這個助手嗎?因爲它看起來像你沒有登錄的用戶。 – Matt 2013-03-22 09:07:10
'current.user.blank?'返回** true **。 'load_and_authorize_resource'和下面的答案的新縮進一起工作。這可能是別人的答案。謝謝! – JanDintel 2013-03-22 12:45:40