2012-02-28 42 views
8

Radarlarda 2.3.8 site Her sayfada oturum açma bağlantıları var (bu, kullanıcıyı ayrı bir imza sayfasına götürür). Başarılı bir girişten sonra kullanıcı şu anda root'a yönlendiriliyor. Bunun yerine, daha önce görüntüledikleri sayfaya yönlendirmek istiyorum. Ben request.referer kullanarak denedimKullanıcıyı giriş yaptıktan sonra önceki sayfaya geri dön (Rails)

:

redirect_back_or_default
redirect_back_or_default(request.referer) 

:

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

Ama bu bir giriş başarılı olsa bile, hata "erişim engellendi" üretir. [: return_to] Yerine yönlendireni yönlendirmek için çalışmakla

+0

olarak değiştirin. Doğru görünüyor, aslında giriş yaptınız mı? – Chap

+0

Evet, kesinlikle giriş yapıyorlar (daha önce erişilemeyen sayfaları görüntüleyebilir, kullanıcı bağlantılarına yapılan bağlantı linklerini değiştirebilir, bağlantıdaki bağlantı değişikliklerini imzalayabilir, vb.). Hata, kullanıcı kökten oturum açtığında bile oluşur. – Exupery

+0

Oturum denetleyici kodunuzu gönderebilir misiniz? – PhillipKregg

cevap

13

, ben oturumu kuracak Sen gerekir

bir bütün eylemler üzerinde kimlik doğrulaması önce çalışır filtreden önce:

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

Daha sonra yönlendirme şeklinizi sadece

redirect_back_or_default() 
+0

Tam olarak aradığım şey, bu harika bir teşekkür! – Exupery

+0

Bunun için teşekkürler, StackOverflow'ta işe yaramadı ve diğer cevaplar beni işe yaramadı. – kakubei

+0

Evet. Bu iyi olmayan bir çözümdür. Bunu bulmakta zorlandığım şey buydu, bu yüzden yorumları bulmak için "Devise kullanmama" yazacağımı düşündüm. –

İlgili konular