我正在使用本指南在Rails中设置Devise: http://codepany.com/blog/rails-5-user-accounts-with-3-types-of-roles-devise-rails_admin-cancancan/
它表示将其放在您的家庭控制器上以防止Devise在您的主页上请求身份验证:
skip_before_action :authenticate_user!, :only => [:index]
我的家庭控制器名为dev,所以我的dev_controller.rb看起来像这样:
class DevController < ApplicationController
def index
skip_before_action :authenticate_user!, :only => [:index]
end
end
现在,当我访问我的网站时,我收到此错误:
undefined method `before_action' for #<MenuController:0xb193b640>
关于我为何会收到此错误的任何想法?
答案 0 :(得分:5)
请尝试以下
skip_before_action
应该在index
方法范围之外。由于before_action
或skip_before_action
是一种类方法。不应该在实例方法(索引)中调用它
class DevController < ApplicationController
skip_before_action :authenticate_user!, :only => [:index]
def index
end
end
答案 1 :(得分:1)
由于skip_before_action
是一种Class方法,因此无法从实例方法中调用它
它也称为回调方法,here是其他方法。
您可以将代码更新为
class DevController < ApplicationController
skip_before_action :authenticate_user!, :only => [:index]
def index
end
end
答案 2 :(得分:0)
如果before_action
似乎令人困惑,您可以使用 before_action :authenticate_user! , except:[index]
,如下所示
{{1}}