2016-08-30 3 views
0

Nach login und signup möchte ich den Benutzer nur dann auf eine bestimmte Seite umleiten, wenn der Benutzer von einer bestimmten Seite kam.Rails/Devise So leiten Sie nach dem Anmelden auf eine bestimmte Seite um

Was ich versucht habe bisher zu tun - mit devise:

  1. Ich habe einen Parameter auf einen Link und überprüft, dass die Parameter in der Login-Seite. Mit der Methode after_sign_in_path_for(resource) von devise habe ich eine Bedingung für diesen Parameter erstellt. Wenn true, würde die Seite meiner gewünschte Seite

    Link-

    <%= link_to "Login before continuing", new_user_session_path(:registration_process => true) 
    

    Auf ApplicationController.rb

    Dies funktioniert nicht
    def after_sign_in_path_for(resource) 
    if params[:registration_process] 
        leads_path # desired page 
    else 
        super 
    end 
    end 
    

umleiten werden.

Ich weiß nicht, ob params die beste Option ist, da ich das gleiche mit der Anmeldeseite machen möchte.

Vielen Dank. Jede Hilfe wird sehr geschätzt.

+0

kein Rubin Experten verwenden können, aber vielleicht können Sie passieren in der gewünschten Weiterleitungs-URL als Parameter? Dann könnten Sie dorthin umleiten, wenn es nach jedem Login übergeben wird. Andernfalls müssten Sie für jeden Workflow eine andere Konfiguration hinzufügen, und Sie könnten in Zukunft noch viele weitere hinzufügen. –

Antwort

0

Einfach! Warum nicht versuchen:

URI(request.referer).path?

Jetzt können Sie im Grunde den Pfad identifizieren, woher Sie kamen.

Sie können auch die Seite speichern, von der Sie in einer Sitzung gekommen sind. z.B.

session[:intended_url] = request.url 

hoffe das hilft.

0

Versuchen Sie diese

if resource.class == User && current_user 
    user_dashboard_path 
else 
    super 
end 
0

Ich glaube, Sie Ihre params mit Session-Pfad in Ihrer new_user_session_path Form wie url: session_path(resource_name, :registration_process => true) danach passieren sollten Sie if params[:registration_process]

Verwandte Themen