2017-01-20 4 views
0

Ich benutze Devise für Benutzer, aber ich habe zwei Arten von Benutzern (Kunden und Lieferanten), und benötigen unterschiedliche Umleitungsrouten basierend auf welchem ​​Pfad sie folgen. ZB: Wenn ein Kunde (/signup) sich anmeldet, wird er auf sein Dashboard umgeleitet. Wenn sich ein Lieferant anmeldet (/suppliers/registrations/user), muss er sie an das nächste Formular weiterleiten, wo sie anfangen, ihr Geschäft zu beschreiben (/suppliers/registrations/business). Wie schaffen Sie das?Rails Devise - Verschiedene Umleitungspfade bei der Anmeldung

UPDATE ich meine devise Registrierungen Controller aktualisiert haben gehören die folgenden (ich habe alle kommentierten out Sachen ausgeschlossen)

Benutzer/registrations_controller.rb

class Users::RegistrationsController < Devise::RegistrationsController 

    protected 
    def after_sign_up_path_for(resource) 
     if resource.supplier == true 
     redirect_to supplier_business_path 
     elsif resource.supplier == false 
     redirect_to user_projects_path(current_user) 
     end 
    end 
end 

Aber es bringt mich immer zur Wurzel.

Antwort

2

after_sign_in_path_for sollte nur den Weg zurück, aber nicht eine Umleitung durchzuführen, versuchen Sie Methode wie folgt zu ändern:

protected 
    def after_sign_up_path_for(resource) 
     if resource.supplier == true 
     # also add specific url = '/suppliers/registrations/user' 
     supplier_business_path 
     elsif resource.supplier == false 
     user_projects_path(current_user) 
     end 
    end 

siehe auch diesen Link: https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-up-(registration)

0

Verwenden Sie das Gerät after_sign_in_path_for Methode in Anwendung Controller. Für zB

def after_sign_in_path_for(resource) 
    if resource.role == "customer" 
     redirect_to customer_dashboard_path 
    elsif resource.role == "supplier" 
    redirect_to supplier_dashboard_path 
    end 

    end 
+0

ich das versucht, aber immer noch keine Freude haben. Scheint es vollständig zu ignorieren (Meine Frage oben für es aktualisiert) – Stephen

+0

U muss dies in Application Controller schreiben –

Verwandte Themen