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のライブシェルでcurrent_user返さnilれるので、エラーが発生する理由をイメージできnameますnil。しかし、この方法は常に機能しましたか?!

動作するように変更しようとしましたがcurrent_user.blank?、次の行で同じエラー(予想どおり)が発生します。emailnil

私に何ができる?

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 に答える