我需要的是,当用户转到'/ admin'时,它会重定向到'/ admins / sign_in'以供用户登录。
这就是我所做的:
# routes.rb
devise_for :admins
namespace :admin do
root to: 'users#index'
end
# controllers/admin/base_controller.rb
class Admin::BaseController < ApplicationController
before_action :authenticate_user!
layout 'admin'
end
# controllers/admin/users_controller.rb
class Admin::UsersController < Admin::BaseController
def index
end
end
问题是,当我转到'/ admin'时,它会返回一个错误:
Admin :: UsersController中的NoMethodError #index .. 未定义的方法`authenticate_user!' for Admin :: UsersController
我怎样才能让它发挥作用?
答案 0 :(得分:0)
我们的设置几乎与您相同,而且效果非常好:
我认为问题在于你正在使用devise_for :admins
,而是调用authenticate_user!
;它应该是authenticate_admin!
(根据Devise docs):
class Admin::BaseController < ApplicationController
before_action :authenticate_admin!
end