2012-02-28 26 views
8

Su un binario 2.3.8 sito Ho collegamenti di accesso su ogni pagina (che porta un utente a una pagina di accesso separata). Dopo un login riuscito, l'utente è attualmente reindirizzato a root. Invece mi piacerebbe reindirizzare alla pagina che stavano visualizzando in precedenza.Restituisce l'utente alla pagina precedente dopo il login (Rails)

Ho provato con request.referer:

redirect_back_or_default(request.referer) 

Dove redirect_back_or_default:

def redirect_back_or_default(default) 
    redirect_to(session[:return_to] || default) 
    session[:return_to] = nil 
end 

Ma che genera un "accesso negato" l'errore, anche se l'accesso è riuscito.

+0

Questo sembra giusto, sei sicuro che stanno effettivamente registrando? – Chap

+0

Sì, sicuramente si stanno effettuando l'accesso (possono visualizzare pagine precedentemente inaccessibili, il collegamento di accesso cambia al link della pagina utente, le modifiche al collegamento del sottoscrittore al signout, ecc.). L'errore si verifica anche quando l'utente effettua l'accesso da root. – Exupery

+0

Potresti pubblicare il codice del tuo controller di sessione? Il controller delle sessioni – PhillipKregg

risposta

13

Invece di cercare di reindirizzare il referrer, vorrei impostare la sessione [: return_to]

Avrete bisogno di una prima di filtro che viene eseguito prima l'autenticazione su tutte le vostre azioni:

def store_return_to 
    session[:return_to] = request.url 
end 

Quindi cambia il tuo reindirizzamento per essere semplicemente

redirect_back_or_default() 
+0

Esattamente quello che stavo cercando, funziona molto bene grazie! – Exupery

+0

Grazie per questo, mi ci sono volute ore per trovare e altre risposte in StackOverflow non ha funzionato. – kakubei

+0

Sì. Questa è una buona soluzione non elaborata. Questo è quello che stavo facendo fatica a trovare, quindi ho pensato di digitare "non usare Devise" qui nei commenti, quindi è più facile da trovare! –

Problemi correlati