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

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

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


person 6ft Dan    schedule 04.06.2014    source источник
comment
Мне было бы проще просто создать обычный файл контроллера администратора: /app/controllers/admin_controller.rb Этот вопрос может быть полезен, если вы хотите продолжить свой текущий подход: stackoverflow.com/questions/5051487/   -  person Powers    schedule 04.06.2014


Ответы (1)


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

  namespace :admin do
    resources :users
  end

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

person idlefingers    schedule 04.06.2014
comment
Спасибо! Это не было объяснено в github. .com/plataformatec/devise/wiki/, так что я рад, что вы это объяснили. - person 6ft Dan; 05.06.2014