2016-03-01 52 views
1

我試圖用devise,cancancan和rolify創建一個登錄系統。設計部分正在工作。我最近添加了cancancan和rolify,我試圖測試它們是否工作。PagesController中的NameError#index

我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。我該如何解決這個問題?

回答

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

+0

我會很快檢查,但我不更多信息,我不覺得我必須安裝一個寶石。我已經在一週前使用過cancancan了(它正在工作,但我有自己的用戶系統,有會話,而不是設計),我知道我沒有爲該方法加載一個新的gem。 –