2012-09-07 13 views
6

estoy haciendo panel de administración en mi aplicación, hice el controlador usuario andamio para el administrador (Usuario Modelo ya existe) de esta manera:carriles de espacio de nombres sin inicializar constantes

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

y en rutas

namespace :admin do 
resources :users 
resources :dashboard 
end 

y controladores/admin/users_controllers.erb parece

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 

así que cuando voy a la URL/admin/usuarios tengo el seguimiento ing de error:

NameError in Admin::UsersController#index 

uninitialized constant Admin::User 

¿Cómo puedo solucionar este problema

Gracias

+0

¿Cómo es 'app/models/admin/user.rb'? – rubiii

Respuesta

5

Si no se namespaced su preexistentes User modelo, intente reemplazar

@admin_users = Admin::User.all 

con

@admin_users = ::User.all 
+0

@admin_users = :: User.all da error de rutas: método indefinido 'user_path ' – Jawad

+0

El código generado por scaffold espera que su modelo' User' esté en el módulo 'Admin', al igual que el controlador. Asegúrate de que 'routes.rb' tenga algo así como' namespace: admin {resources: users} '; luego vaya a su 'app/views/admin/users/index.html.erb' y cambie' link_to 'Show', admin_user' a 'link_to 'Show', admin_user_path (admin_user)'; y 'link_to 'Destroy', admin_user, ...' to 'link_to 'Destroy', admin_user_path (admin_user), ...'. –

+0

Gracias, por su apoyo – Jawad

3

Creo que el generador no creó los modelos de directorio/administrador, por lo que debe llamar a User.all y no a Admin :: User.all.

Comprobar si el user.rb es en los modelos o modelos/admin ...

+0

no hay modelos de directorio/admin ... tengo que crear modelos separados para el espacio de nombres admin, también User.all da error de rutas "método indefinido' user_path '" – Jawad

+0

Si desea que sí ... pero no es necesario. Creo que en tu caso no quieres eso. El usuario debe estar en los modelos de directorio y siempre deberá llamar a User.all. – tbem

+0

da error de rutas "método_definado' vía_usuario '"esto es porque no tiene un controlador_usuario, sino administrador_usuarios_admin, por lo que tiene vía_acceso_usuarios y no vía_de_usuarios ... y en la ruta tiene un espacio de nombres: recursos de administración de tareas: usuarios y no recursos: usuarios fuera del administrador del espacio de nombres – tbem

0

En mi caso particular, me había nombrado a los archivos y clases correctamente, pero el carpeta que contiene fue nombrado incorrectamente.

tuve:

/models/maps/type.rb 

tuve que cambiarlo a:

/models/map/type.rb 

Aviso el nombre de la carpeta singular. Al cambiarlo a singular, Rails pudo cargar automáticamente la clase correcta y ya no tiene este error en el tiempo de ejecución.

Cuestiones relacionadas