NameError in PagesController#index



我正在尝试创建一个带有devise,cancancan和rolify的登录系统。设计部分正在工作。我最近添加了cancancan和rolify,我正在尝试测试它们是否有效。

我的康康康能力文件:

class Ability
  include CanCan::Ability
  def initialize(user)
    if user.has_role? :admin
      can [:index], Page
    else
      can [:index,:lecture]
    end
  end
end

我有一个根页面root to: "pages#index"它正在工作。如果我在页面控制器的顶部添加load_and_authorize_resource,例如

class PagesController < ApplicationController
  load_and_authorize_resource
  def index
  end
  def lecture
  end
end

我在尝试访问它时返回:

NameError in PagesController#index由以下行生成:

      names.inject(Object) do |constant, name|
    if constant == Object
    *  constant.const_get(name)
    else
      candidate = constant.const_get(name)
      next candidate if constant.const_defined?(name, false)

* 是给出错误的行。我还在 rolify 文档中看到,我必须将resourcify添加到将要使用它的文件中。但是如果我尝试添加它,我会得到一个错误undefined method resourcify. 我该如何解决这个问题?

检查以下内容:

宝石文件:

gem 'load_and_authorize_resource'
# bundle install after

应用控制器:

class ApplicationController < ActionController::Base
  include LoadAndAuthorizeResource
end

页面控制器

class PagesController < ApplicationController
  load_and_authorize_resource
  ....

更多信息在这里加载和授权资源

最新更新