Ruby on Rails - Erreur de nom :Constante non initialisée UsersController dans /admin/users
-
21-12-2019 - |
Question
J'ai ajouté la ressource utilisateurs sous admin pour permettre à l'administrateur de contrôler/modifier les comptes d'utilisateurs.Mais j'obtiens une erreur concernant constante non initialisée UsersController.Les comptes d'utilisateurs sont gérés par appareil.Actuellement, je souhaite simplement créer la page d'index pour répertorier chaque utilisateur.Voici les parties pertinentes :
/app/controllers/admin/users_controller.rb
class Admin::UsersController < ApplicationController
def index
@users = User.all
end
end
Je me suis assuré d'avoir mon devise_for :users au début de mes itinéraires.
/conig/routes.rb
Rails.application.routes.draw do
devise_for :users
scope "/admin" do
resources :users
end
root :to => "visitors#index"
end
Je sais que la vue n'est pas le problème.La page que j'essaie de charger affiche cette erreur.
A part ça, tout le reste fonctionne bien.Dois-je gérer le UsersController différemment ?Par exemple, dois-je hériter d’un contrôleur Devise ?
La solution
scope
suppose que vous allez placer vos contrôleurs dans un espace de noms (donc avec la portée, ce serait simplement UsersController
pas Admin::UsersController
, et pas de répertoire /admin).Si vous souhaitez utiliser un Admin
espace de noms/répertoire, vous devez définir votre itinéraire comme ceci :
namespace :admin do
resources :users
end
En passant, vous pouvez voir vers quoi pointent vos itinéraires avec rake routes
.Essayez de l'exécuter avec scope
contre namespace
et vous verrez comment cela change les choses.