2012-09-07 16 views
6

I Admin-Panel in meiner app mache ich das Gerüst Benutzer-Controller für den Admin (Benutzer Modell bereits vorhanden ist) gemacht wie folgt aus:Schienen Namespace nicht initialisierte Konstante

rails g scaffold_controller Admin::User username:string password_digest:string role:string 

und in Routen

namespace :admin do 
resources :users 
resources :dashboard 
end 

und Controller/admin/users_controllers.erb sieht aus wie

class Admin::UsersController < ApplicationController 
    # GET /admin/users 
    # GET /admin/users.json 
    def index 
    @admin_users = Admin::User.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @admin_users } 
    end 
    end 

so, wenn ich zu uRL/admin/users gehen bekam ich die Folge ing Fehler:

NameError in Admin::UsersController#index 

uninitialized constant Admin::User 

Wie löse ich dieses Problem

Dank

+0

Wie sieht 'app/models/admin/user.rb' aus? – rubiii

Antwort

5

Wenn Ihr User Modell bereits existierenden nicht Namespace ist, versuchen

@admin_users = Admin::User.all 

mit

@admin_users = ::User.all 
ersetzen
+0

@admin_users = :: User.all gibt Routen Fehler: undefinierte Methode 'user_path ' – Jawad

+0

Der von' scaffold 'generierte Code erwartet, dass sich Ihr' User'-Modell genau wie der Controller im Modul 'Admin' befindet. Stellen Sie sicher, dass Ihr 'routes.rb' etwas wie' namespace: admin {resources: users} 'hat; Gehe dann zu deiner 'app/views/admin/users/index.html.erb' und ändere' link_to 'Show', admin_user' zu 'link_to 'Show', admin_user_path (admin_user)'; und 'link_to 'Destroy', admin_user, ...' zu 'link_to 'Destroy', admin_user_path (admin_user), ...'. –

+0

Danke, für Ihre Unterstützung – Jawad

3

Ich denke, der Generator erstellt nicht das Verzeichnis models/admin, also sollten Sie User.all und nicht Admin :: User.all aufrufen.

Überprüfen Sie, ob die user.rb in Modelle oder Modelle/admin ist ...

+0

gibt es keine Verzeichnis-Modelle/admin ... muss ich separate Modelle für Admin-Namespace erstellen, auch User.all gibt Routen Fehler "undefined Methode' user_path '" – Jawad

+0

Wenn Sie ja wollen ... aber es ist nicht erforderlich. Ich denke, in deinem Fall willst du das nicht. Der Benutzer sollte sich in den Verzeichnismodellen befinden, und Sie rufen dann immer User.all an. – tbem

+0

gibt Routen Fehler "undefined Methode' user_path '"Dies liegt daran, Sie haben keine Benutzer_controller, sondern eine Admin_users_controller, so dass Sie admin_users_path und nicht ein users_path ... und in der Route haben Sie einen Namespace: admin tun Ressourcen: Benutzer und keine Ressourcen: Benutzer außerhalb des Namespace-Administrators – tbem

0

In meinem Fall hatte ich die Dateien und Klassen korrekt benannt, aber der enthält Ordner wurde falsch benannt.

Ich hatte:

/models/map/type.rb 

Hinweis der singuläre Ordnername:

/models/maps/type.rb 

ich es ändern musste. Ändern in Singular erlaubt Rails lädt automatisch die richtige Klasse und hat diesen Fehler zur Laufzeit nicht mehr.

Verwandte Themen