Ruby on Rails – NameError:неинициализированный константный UsersController в /admin/users

StackOverflow https://stackoverflow.com//questions/24027023

Вопрос

Я добавил ресурс пользователей в разделе администратора, чтобы администратор мог контролировать/изменять учетные записи пользователей.Но я получаю сообщение об ошибке неинициализированная константа 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

Я знаю, что вид не проблема.Страница, которую я пытаюсь загрузить, отображает эту ошибку.

Rails Error Output

В остальном все остальное работает нормально.Нужно ли мне обрабатывать UsersController по-другому?Например, нужно ли мне наследовать контроллер Devise?

Это было полезно?

Решение

scope предполагает, что вы собираетесь поместить свои контроллеры в пространство имен (так что с областью действия это будет просто UsersController нет Admin::UsersController, и нет каталога /admin).Если вы хотите использовать Admin пространство имен/каталог, вам нужно определить свой маршрут следующим образом:

  namespace :admin do
    resources :users
  end

Кроме того, вы можете увидеть, на что указывают ваши маршруты, с помощью rake routes.Попробуйте запустить его с scope против namespace и вы увидите, как это меняет дело.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top