PagesController中的NameError #index

时间:2016-03-01 22:32:22

标签: ruby-on-rails devise cancancan rolify

我尝试使用设计,cancancan和rolify创建登录系统。设计部分正在运作。我最近添加了cancancan和rolify,我试图测试它们是否正常工作。

我的cancancan能力档案:

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。我怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

检查以下内容:

<强>的Gemfile:

gem 'load_and_authorize_resource'
# bundle install after

<强>的ApplicationController:

class ApplicationController < ActionController::Base
  include LoadAndAuthorizeResource
end

<强> PagesController

class PagesController < ApplicationController
  load_and_authorize_resource
  ....

更多信息Load And Authorize Resource