Ruby on Rails – NameError:nicht initialisierte Konstante UsersController unter /admin/users
-
21-12-2019 - |
Frage
Ich habe die Benutzerressource unter „Admin“ hinzugefügt, damit der Administrator Benutzerkonten steuern/ändern kann.Aber ich erhalte eine Fehlermeldung nicht initialisierte Konstante UsersController.Benutzerkonten werden vom Gerät verwaltet.Derzeit möchte ich nur die Indexseite erstellen, um jeden Benutzer aufzulisten.Hier sind die relevanten Teile:
/app/controllers/admin/users_controller.rb
class Admin::UsersController < ApplicationController
def index
@users = User.all
end
end
Ich habe dafür gesorgt, dass mein devise_for :users am Anfang meiner Routen steht.
/conig/routes.rb
Rails.application.routes.draw do
devise_for :users
scope "/admin" do
resources :users
end
root :to => "visitors#index"
end
Ich weiß, dass die Aussicht nicht das Problem ist.Die Seite, die ich laden möchte, zeigt diesen Fehler an.
Ansonsten funktioniert alles andere gut.Muss ich den UsersController anders behandeln lassen?Muss ich beispielsweise von einem Devise-Controller erben?
Lösung
scope
geht davon aus, dass Sie Ihre Controller in einem Namespace unterbringen (also mit Gültigkeitsbereich wäre es einfach so). UsersController
nicht Admin::UsersController
, und kein /admin-Verzeichnis).Wenn Sie eine verwenden möchten Admin
Namespace/Verzeichnis, Sie müssen Ihre Route wie folgt definieren:
namespace :admin do
resources :users
end
Abgesehen davon können Sie sehen, worauf Ihre Routen hinweisen rake routes
.Versuchen Sie es mit auszuführen scope
vs namespace
und Sie werden sehen, wie es die Dinge verändert.