2010-08-29 11 views
22

J'utilise Rails 2.3 et Devise pour gérer l'enregistrement/l'authentification des utilisateurs.Comment rediriger un utilisateur après l'enregistrement lors de l'utilisation de Devise?

J'ai besoin de rediriger un utilisateur vers un site Web tiers externe immédiatement après qu'un utilisateur a ouvert un compte. Été en regardant dans le code & en ligne, mais ne peut pas voir comment faire cela.

Comment puis-je modifier le flux de conception pour rediriger l'utilisateur?

Répondre

28

Ajouter à votre Controller Application

# 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 

Voici la liste des aides Concevoir, vous pouvez utiliser http://rdoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers

J'espère que aide =)

+1

qui ne fonctionne pas avec des rails 3.2 et dernier legs – Sucrenoir

+0

Vous redéfini le 'after_sign_ * dans * _path_for', mais pour le problème de l'OP, Jason a besoin de passer outre la' after_sign_ * jusqu'à * _path_for', comme Brett a souligné au dessous de. –

+0

Réponse mise à jour. –

52

La réponse indiquée comme " "réponse fait spécifiquement référence à after sign_in ... Si vous souhaitez rediriger un utilisateur après le sign_up, vous devez remplacer ce qui suit:Tous les détails peuvent être trouvés sur the wiki.

+0

Le code pour after_sign_up_path_for semble être un wrapper pour after_sign_in_path_for. Donc, si vous voulez que les deux se comportent de la même manière, alors je pense que overriding after_sign_in_path_for couvrira les deux. – pduey

+1

after_sing_in_path fonctionne si vous n'avez pas de confirmation, Après confirmation, il redirige vers le chemin racine. J'ai une confirmation de l'utilisateur alors comment dois-je réaliser la redirection après l'inscription, après la fonctionnalité de connexion que j'ai fait pour moi-même, mais je ne comprends pas comment faire pour vous inscrire. –

+3

Cela doit également être fait dans votre propre RegistrationsController, et non dans ApplicationController. – declan

18

Si vous utilisez les confirmations de Devise (ce qui signifie que l'utilisateur n'est pas activé immédiatement après son inscription), vous devez remplacer la méthode 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 

Assurez-vous de dire à l'utilisateur d'utiliser votre RegistrationsController.

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

ajoutez ceci def after_sign_up_path_for (ressource) au lieu de "inactive" – ChrisBedoya