2011-04-07 13 views
17

Estoy tratando de permitir que un usuario administrador edite otros usuarios en Devise, pero cuando intento acceder a una página de edición para otro usuario (ej./Users/1/edit) , me sale el siguiente mensaje:Idear: Permitir a los administradores editar otros usuarios - Rails

Unknown action 

Could not find devise mapping for path "https://stackoverflow.com/users/1/edit" 

el único camino que parece funcionar es/users/edit, que muestra la página de edición del usuario actual.

En mis rutas de archivo que tengo:

devise_for :users, :controllers => { :registrations => 'users' } 
resources :users 

¿Alguna idea? ¡Gracias!

Respuesta

1

He hecho lo que estás tratando de hacer, y tus rutas se ven bien.

También necesita crear un UsersController que maneje todas las acciones de CRUD que desea realizar en los usuarios. Esto está separado de Devise.

Cuando su UsersController está allí, solo puede permitir que los usuarios administradores accedan a acciones particulares redireccionando (quizás en un filtro anterior) si el usuario_actual no es un administrador.

6

Diseñar es ideal para el usuario autenticación pero sí no vienen con soporte incorporado para la gestión usuarios. Entonces, tendrás que construirlo tú mismo.

Aquí está an example de cómo hacerlo. El ejemplo tiene algunos meses pero debería indicarle la dirección correcta.

+0

Muchas gracias, Dty: parece que va a funcionar. ¡Emocionado por probarlo al día siguiente y seleccionar su respuesta cuando/si lo hace! Gracias de nuevo. –

+0

alguna vez funciona esto? – ZMorek

19

Tuve que hacer esto también, y actualmente no está diseñado. Como la respuesta más votada tiene un vínculo inactivo, pensé en publicar mi solución aquí.

Necesita crear un UsersController y construir sus propios formularios y controladores por su cuenta, pero también necesita aislar el UsersController que diseña configuraciones. Para ello, en el archivo de routes.rb, modificar su llamada a devise_for :users

devise_for :users, :path_prefix => 'd' # routes for devise modules on User 

resources :users # custom admin-type CRUD for users 

Esto va a cambiar todas sus rutas Idear-manejado por defecto a/d/usuarios/... y le permiten tener los/usuarios/.. .ruta para permitirle administrar usuarios como administrador.

Devise también se ocupa de este in their wiki.

Cuestiones relacionadas