3

私は取得しています

undefined local variable or method `current_user` error for

私の見解では次のコードが原因です

<% if can? :update, Project %>
  <span class="admin">
    <%= link_to 'Nieuw Project', new_project_path %>
  </span>
<% end %>

コードを削除すると、ページが正しくレンダリングされます。

カンカンコード:

class Ability
  include CanCan::Ability

  def initialize(user)   
    user ||= User.new

    if user.admin?
      can :manage, Post
      can :manage, Project
      can :manage, Page
      can :manage, Comment
      can :manage, User
    else
      can :read, :all
      cannot :read, User      
      can :create, Comment      
    end
  end
end

ユーザーモデル:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :lockable and :timeoutable
  devise :invitable, :database_authenticatable, #:registerable, :confirmable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation

  def admin?
    self.id
  end
end

私のアプリの仕様

  • レール3.0.3
  • デバイス1.5.3
  • 招待可能な0.6.0を考案
  • カンカン1.6.4
4

1 に答える 1

5

たぶん、あなたは cancan と devise についてのこの小さな詳細に陥っています. https://github.com/ryanb/cancan/wiki/ching-defaults
Cancan は、current_userメソッドがコントローラーにあることを期待しています。これが存在するかどうかを確認します。

于 2012-12-21T15:26:45.087 に答える