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'' }
Hola, recientemente agregué mi nombre y apellido a mi registro. Estoy usando Rails 4.
Usé las siguientes instrucciones / tutorial para hacer esto:
http://www.jacopretorius.net/2014/03/adding-custom-fields-to-your-devise-user-model-in-rails-4.html .
:)
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.