2010-08-29 3 views
22

Ich verwende Rails 2.3 und Devise, um Benutzerregistrierung/Authentifizierung zu handhaben.Wie wird ein Benutzer nach der Registrierung umgeleitet, wenn er Devise verwendet?

Ich muss einen Benutzer sofort auf eine externe Website eines Drittanbieters umleiten, nachdem sich ein Benutzer für ein Konto angemeldet hat. Ich habe im Code & online gesucht, kann aber nicht sehen, wie das geht.

Wie kann ich den Gerätefluss ändern, um den Benutzer umzuleiten?

Antwort

28

zu Ihrem Application Controller hinzufügen

# 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 

Hier wird die Liste der Devise Helfer Sie http://rdoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers

verwenden kann ich hoffen, dass =)

+1

das funktioniert nicht mit Schienen 3.2 und letzte devise – Sucrenoir

+0

Sie die 'after_sign_ * in * _path_for' overrode, aber für OP das Problem, muss Jason die' after_sign_ * bis * _path_for' außer Kraft zu setzen, als Brett wies darauf hin, unten. –

+0

Aktualisierte Antwort. –

52

Die Antwort aufgeführt als "hilft Korrekt "Antwort bezieht sich speziell auf after sign_in ... Wenn Sie einen Benutzer nach sign_up umleiten möchten, müssen Sie Folgendes überschreiben:

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

Vollständige Details finden Sie unter the wiki.

+0

Der Code für after_sign_up_path_for scheint ein Wrapper für after_sign_in_path_for zu sein. Also, wenn Sie sich beide gleich verhalten wollen, dann denke ich, dass das Überschreiben von after_sign_in_path_for beides abdeckt. – pduey

+1

after_sing_in_path funktioniert, wenn Sie keine Bestätigung haben, Nach der Bestätigung leitet es zum Root-Pfad um. Ich habe eine Benutzerbestätigung, also wie soll ich die Umleitung nach der Anmeldung erreichen, nachdem ich mich angemeldet habe, aber ich bekomme keine Anleitung zur Anmeldung. –

+3

Dies muss auch in Ihrem eigenen RegistrationsController und nicht im ApplicationController erfolgen. – declan

18

Wenn Sie die Bestätigungen von Devise verwenden (dh der Benutzer wird nicht sofort nach der Anmeldung aktiviert), müssen Sie die Methode after_inactive_sign_up_path_for überschreiben.

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

Stellen Sie sicher, dass Sie dem Gerät mitteilen, dass es Ihren RegistrationsController verwenden soll.

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

Fügen Sie dieses def after_sign_up_path_for (resource) anstelle von "inactive" hinzu – ChrisBedoya

Verwandte Themen