2010-11-20 3 views
7

Ich möchte es, wenn nach einem Benutzer anmeldet, dass es automatisch an den vorherigen Speicherort umleiten, aber das scheint nie zu passieren, es leitet immer zurück zum Stammort. Aus dem Lesen der Dokumente auf Devise für diese scheint es, dass diese Funktionalität nur funktionieren soll. Verwende ich es irgendwie falsch und/oder kann ich es zwingen, den Standort zu speichern und umzuleiten, egal?devise sign_in_and_redirect scheint nie zu funktionieren

http://rubydoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers#stored_location_for-instance_method

authentication = UserToken.find_by_provider_and_uid(omniauth['provider'], omniauth['uid']) 

if authentication 
    flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => omniauth['provider'] 
    sign_in_and_redirect(:user, authentication.user) 
else 
+0

Ich habe gerade festgestellt, dass ich nicht die Standardfunktionalität bekomme, weil ich den authorize_user nicht benutze! Rückruf, der den Standort speichert ... wie kann ich den Standort manuell erstellen? – holden

+0

wie hast du das gelöst? Ich folge https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview um Facebook Login für eine Rails 3.2.5 App mit Devise zu integrieren. Die Methode sign_in_and_redirect funktioniert nicht :( – asitmoharna

+0

Ich hatte das gleiche Problem, habe nur eine manuelle sign_in und eine separate Umleitung, überprüfen Sie den Quellcode von sign_in_and_redirect sign_in @user redirect_to root_path – MatthewFord

Antwort

4

Scroll nach unten this Google group page und Check-out-Verfahren der überschriebenen 'stored_location_for' ersinnen. Ich habe eine angepasste Version davon in meinem application_controller der wie folgt aussieht:

def stored_location_for(resource) 
    if current_user && params[:redirect_to] 
     flash[:notice] = "Congratulations, you're signed up!" 
     return params[:redirect_to] 
    end 
    super(resource) 
    end 

dass Sie die Position manuell, indem man in einem ‚redirect_to‘ param erstellen lassen soll.

Verwandte Themen