Ruby on Rails – NameError:неинициализированный константный UsersController в /admin/users
-
21-12-2019 - |
Вопрос
Я добавил ресурс пользователей в разделе администратора, чтобы администратор мог контролировать/изменять учетные записи пользователей.Но я получаю сообщение об ошибке неинициализированная константа UsersController.Учетные записи пользователей обрабатываются устройством.В настоящее время я просто хочу создать индексную страницу для перечисления каждого пользователя.Вот соответствующие части:
/app/controllers/admin/users_controller.rb
class Admin::UsersController < ApplicationController
def index
@users = User.all
end
end
Я позаботился о том, чтобы мой devise_for :users находился в начале моих маршрутов.
/conig/routes.rb
Rails.application.routes.draw do
devise_for :users
scope "/admin" do
resources :users
end
root :to => "visitors#index"
end
Я знаю, что вид не проблема.Страница, которую я пытаюсь загрузить, отображает эту ошибку.
В остальном все остальное работает нормально.Нужно ли мне обрабатывать UsersController по-другому?Например, нужно ли мне наследовать контроллер Devise?
Решение
scope
предполагает, что вы собираетесь поместить свои контроллеры в пространство имен (так что с областью действия это будет просто UsersController
нет Admin::UsersController
, и нет каталога /admin).Если вы хотите использовать Admin
пространство имен/каталог, вам нужно определить свой маршрут следующим образом:
namespace :admin do
resources :users
end
Кроме того, вы можете увидеть, на что указывают ваши маршруты, с помощью rake routes
.Попробуйте запустить его с scope
против namespace
и вы увидите, как это меняет дело.