2011-12-11 12 views
11

Estoy tratando de anular algunas de las funciones del controlador de registros de diseño predeterminado para que solo ciertos usuarios puedan crear cuentas para otros. Así que en un archivo llamado registrations_controller.rb bajo los controladores/carpeta de usuario Tengo el siguienteidear reemplazos de registros controlador - constante no inicializada Usuarios :: RegistrationsController

class Users::RegistrationsController < Devise::RegistrationsController 

    before_filter :check_permissions, :only => [:new, :create, :cancel] 
    skip_before_filter :require_no_authentication 

    def check_permissions 
    authorize! :create, resource 
    end 
end 

y en mis rutas presentar tengo

devise_for: usuarios,: controladores => {: registros => ' usuarios/registros '}

Cuando trato de ir a los usuarios/sign_up url obtengo un error de enrutamiento' constante no inicializada Usuarios :: RegistrationsController '.

Entonces, lo que realmente me asusto de esto es que había usado prácticamente la misma funcionalidad en la aplicación de rails 3 sin ningún problema. Eché un vistazo a algunas de las otras preguntas de stackoveflow similares a esta y todavía no soy tan inteligente. La aplicación que estoy construyendo ahora es una aplicación carriles de 3.1 y estoy usando idear 1.5.1

Aquí están las rutas pertinentes que caso de que útil

new_user_session GET /users/sign_in(.:format)          {:action=>"new", :controller=>"devise/sessions"} 
         user_session POST /users/sign_in(.:format)         {:action=>"create", :controller=>"devise/sessions"} 
       destroy_user_session DELETE /users/sign_out(.:format)         {:action=>"destroy", :controller=>"devise/sessions"} 
         user_password POST /users/password(.:format)         {:action=>"create", :controller=>"devise/passwords"} 
        new_user_password GET /users/password/new(.:format)        {:action=>"new", :controller=>"devise/passwords"} 
        edit_user_password GET /users/password/edit(.:format)        {:action=>"edit", :controller=>"devise/passwords"} 
             PUT /users/password(.:format)         {:action=>"update", :controller=>"devise/passwords"} 
      cancel_user_registration GET /users/cancel(.:format)          {:action=>"cancel", :controller=>"users/registrations"} 
        user_registration POST /users(.:format)           {:action=>"create", :controller=>"users/registrations"} 
       new_user_registration GET /users/sign_up(.:format)         {:action=>"new", :controller=>"users/registrations"} 
       edit_user_registration GET /users/edit(.:format)          {:action=>"edit", :controller=>"users/registrations"} 
             PUT /users(.:format)           {:action=>"update", :controller=>"users/registrations"} 
             DELETE /users(.:format)           {:action=>"destroy", :controller=>"users/registrations"} 

Respuesta

2

Probé la misma configuración que se pone aquí Pero funcionó para mí. Cargué el application en github (también cargué el registro para que veas que realmente funcionó).

Comprobación doble de posibles errores tipográficos. Tal vez olvidaste un plural o hay un error tipográfico en un nombre de clase.

+0

Gracias por pegar ese ejemplo. Es realmente extraño, parece que tengo exactamente la misma configuración que tú, pero todavía recibo ese error constante no inicializado. Seguiré buscando errores tipográficos – Conor

+0

Tuve el mismo problema, resultó ser un error tipográfico para mí también. – Jondlm

12

Yo diría que hay algo mal en su nombre de archivo.

El archivo debe ser llamado a los usuarios/registrations_controller.rb

que funciona para mí.

3

¿Dónde se guardó registrations_controller.rb? La ubicación es importante. Descubrí que estaba cometiendo un error al guardarlo en app/controllers/devise/.. Simplemente necesitaba ser salvado en app/controllers/. por ejemplo:

app/controllers/registrations_controller.rb


Además, config/routes.rb ruta debe ser definida como:

devise_for :users, controllers: { registrations: 'registrations' }

0

Si ha sido generar las vistas movimiento Vista de archivos

Asumo que ya utiliza rieles generan legado: vistas generadas idear vistas.Mover la carpeta views/idee/registrations a views/users , creo que también deberías cambiar el _path en los formularios

Cuestiones relacionadas