0

在更新 HAML(从 4.0.0 到 4.0.1)后,我的 Devise 辅助方法出现错误。这可能会触发错误,不确定。

诸如 Devise 辅助方法user_signed_in?正在工作(尽管我认为它没有),但是该方法current_user不是。引发的此错误是undefined method name for nilcurrent_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,所以我可以想象为什么我得到错误namenil. 但是这种方法总是有效的?!

我试图将其更改为current_user.blank?有效的,但随后在下一行中出现相同的错误(如预期的那样)emailis nil.

我能做些什么?

4

1 回答 1

0

也许这只是您的帖子的格式问题,但看起来您可能只是缩进错误?也许这就是你的意思?

- 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)
于 2013-03-22T07:12:05.870 回答