Rails和Devise:命名空间错误

时间:2015-11-13 00:32:25

标签: ruby-on-rails devise

我需要的是,当用户转到'/ 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

我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:0)

我们的设置几乎与您相同,而且效果非常好:

enter image description here

我认为问题在于你正在使用devise_for :admins,而是调用authenticate_user!;它应该是authenticate_admin!(根据Devise docs):

class Admin::BaseController < ApplicationController
  before_action :authenticate_admin!
end