2010-08-29 18 views
22

Estoy utilizando Rails 2.3 y Devise para manejar el registro/autenticación del usuario.¿Cómo redirigir a un usuario después del registro cuando usa Devise?

Necesito redirigir a un usuario a un sitio web externo de un tercero inmediatamente después de que un usuario se registre para una cuenta. Estado buscando en el código & en línea, pero no puede ver cómo hacerlo.

¿Cómo puedo modificar el flujo del dispositivo para redirigir al usuario?

Respuesta

28

Añadir a su Controlador de aplicación

# Devise: Where to redirect users once they have logged in 
    def after_sign_up_path_for(resource) 
    "http://www.google.com" # <- Path you want to redirect the user to. 
    end 

Aquí está la lista de ayudantes Idear que es posible utilizar http://rdoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers

Espero que ayude =)

+1

que no funciona con los carriles de 3.2 y última legado – Sucrenoir

+0

sustituimos el 'after_sign_ * * en _path_for', pero para el problema de la OP, Jason tiene que anular el' after_sign_ * * _path_for' arriba, como se señaló Brett abajo. –

+0

Respuesta actualizada. –

52

La respuesta aparece como el "correcta "la respuesta se refiere específicamente a after_in_in ... Si desea redirigir a un usuario después de iniciar sesión, debe anular lo siguiente:

def after_sign_up_path_for(resource) 
    "http://www.google.com" # <- Path you want to redirect the user to after signup 
end 

Los detalles completos se pueden encontrar en the wiki.

+0

El código para after_sign_up_path_for parece ser un contenedor para after_sign_in_path_for. Por lo tanto, si desea que ambos se comporten igual, entonces creo que reemplazar a after_sign_in_path_for cubrirá ambos. – pduey

+1

after_sing_in_path funciona si no tiene confirmación. Después de la confirmación, redirige a la ruta raíz. Tengo la confirmación del usuario, entonces, ¿cómo debo lograr la redirección después de iniciar sesión, después de la funcionalidad de inicio de sesión que he hecho por mí mismo pero no estoy obteniendo cómo hacerlo para registrarme? –

+3

Además, esto debe hacerse en su propio RegistrationsController, no en ApplicationController. – declan

18

Si está utilizando las confirmaciones de Devise (lo que significa que el usuario no se activa inmediatamente después de registrarse), debe sobrescribir el método after_inactive_sign_up_path_for.

# controllers/registrations_controller.rb 
class RegistrationsController < Devise::RegistrationsController 
    def after_inactive_sign_up_path_for(resource) 
    "http://somewhere.com" 
    end 
end 

Asegúrese de indicarle a utilizar su RegistrosController.

# config/routes.rb 
devise_for :users, :controllers => {:registrations => 'registrations'} 
+0

agregue este def after_sign_up_path_for (resource) en lugar de "inactive" – ChrisBedoya

Cuestiones relacionadas