ruby-on-rails-3.1 devise

ruby on rails 3.1 - idear el controlador de registros primordial-constante no inicializada Usuarios:: RegistrosController



ruby-on-rails-3.1 devise (5)

Estoy intentando anular la funcionalidad del controlador de registros de diseño predeterminado para que solo ciertos usuarios puedan crear cuentas para otros. Entonces, en un archivo llamado registrations_controller.rb bajo la carpeta de controladores / usuarios tengo lo siguiente

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 mi archivo de rutas tengo

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

Cuando trato de ir a los usuarios / sign_up url obtengo un error de enrutamiento ''usuarios constantes no inicializados :: RegistrationsController''.

Entonces, lo que realmente me asustó de esto es que había usado prácticamente la misma funcionalidad en una 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 Rails 3.1 y estoy usando el dispositivo 1.5.1

Estas son las rutas relevantes en caso de que sean útiles

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"}


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

app/controllers/registrations_controller.rb

Además, la ruta config/routes.rb debe definir como:

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



Intenté la misma configuración que pusiste aquí pero funcionó para mí. Cargué la aplicación en github (también cargué el registro para que veas que realmente funcionó).

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


Si ha generado las vistas Mueva los archivos de vista

Supongo que ya usa los rieles generar dispositivo: vistas generadas vistas de diseño. Mover la carpeta views / idee / registrations a views / users, creo que también deberías cambiar el _path en los formularios


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

Su archivo debe llamarse users / registrations_controller.rb

Funciona para mi.