【问题标题】:NameError in PagesController#indexPagesController#index 中的名称错误
【发布时间】:2016-03-01 22:32:21
【问题描述】:

我正在尝试使用 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。我该如何解决这个问题?

【问题讨论】:

    标签: ruby-on-rails devise cancancan rolify


    【解决方案1】:

    检查以下内容:

    宝石文件:

    gem 'load_and_authorize_resource'
    # bundle install after
    

    应用控制器:

    class ApplicationController < ActionController::Base
      include LoadAndAuthorizeResource
    end
    

    PagesController

    class PagesController < ApplicationController
      load_and_authorize_resource
      ....
    

    更多信息在这里Load And Authorize Resource

    【讨论】:

    • 我会尽快检查,但我不认为我必须为此安装 gem。一周前我使用过 cancancan(它工作正常,但我有自己的带有会话的用户系统,而不是设计),我知道我还没有为该方法加载新的 gem。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多