2012-04-09 19 views
0

Wenn ein Benutzer, der nicht angemeldet ist, eine URL trifft, leitet das Gerät sie zur Anmeldeseite weiter, woraufhin der Benutzer auf seine ursprüngliche Seite weitergeleitet wird. Wie kann ich auf diese Informationen (die ursprüngliche Route/Aktion) in der Anmeldesicht zugreifen? Ich möchte die GUI je nachdem, wohin der Benutzer geht, unterschiedlich darstellen.Erhalte die ursprüngliche URL während der Anmeldung

+0

mögliches Duplikat von [Umleitung nach einer Anmeldung an die ursprüngliche Aufgabe] (http://stackoverflow.com/questions/5359195/redirecting-after-a-login-to-the-original-task) –

+0

@Jordan Dies ist kein Duplikat. Devise schickt den Benutzer korrekt auf die richtige Webseite. Ich möchte nur wissen, * was diese Seite sein wird *. Die Frage, die Sie verknüpft haben, fragt nicht danach und die Antwort geht nicht darauf ein. – paleozogt

Antwort

0

Sie sollten also den Session-Controller von devise erweitern/überschreiben. Dazu kopieren Sie die neuesten new Aktionscode aus here, und fügen Sie ihn in einem Controller (lass es Sitzungen nennen), die von devise der Sitzungen Controller erbt, wie folgt aus:

class SessionsController < Devise::SessionsController 
    def new 
    self.resource = build_resource(nil, :unsafe => true) 
    clean_up_passwords(resource) 
    @after_sign_in_url = after_sign_in_path_for(resource) 
    respond_with(resource, serialize_options(resource)) 
    end 
end 

Da dieser Controller von Devise des erbt, wenn In Ihrem Controller ist keine Aktion definiert, dass die Aktion vom Controller von Devise verarbeitet wird. Sie müssen also nur die Aktion new überschreiben.

Schließlich bearbeiten Sie Ihre Routen-Datei so dass diese Änderung wird wirksam:

# routes.rb 
devise_for :users, :controllers => { :sessions => 'sessions' } 

Alternativ, wenn Sie einen Bereich verwenden, wie folgt aus:

# routes.rb 
devise_scope :user do 
    get 'login' => 'sessions#new', :as => :new_user_session 
end 

Sie jetzt können @after_sign_in_url Ihrer Ansicht zugreifen !

+0

Wo soll ich das nennen? in der new.html.erb von devise wird 'undefined method' nach_sign_in_path_for'' geworfen – paleozogt

+0

Entschuldigung, ich hätte etwas gründlicher sein sollen. Hoffe das hilft. – Ashitaka

+0

ohhh. das macht viel mehr Sinn. Vielen Dank! – paleozogt

Verwandte Themen