2012-02-28 6 views
8

の場合、レール2.3.8のサイトでは、各ページにログインリンクがあります(ユーザーは別のサインインページに移動します)。ログインに成功すると、ユーザーは現在rootにリダイレクトされています。代わりに、以前に表示していたページにリダイレクトしたいと思います。私はrequest.refererを使用してみましたログイン後(レール)

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 

しかし、それは、ログインが成功したにもかかわらず、エラーを "アクセス拒否" を生成。 [:return_to代わりリファラにリダイレクトしようとしているの

+0

これは正しく表示されていますか、実際にログインしていることを確認してください。 – Chap

+0

はい、間違いなくログインしています(以前はアクセスできないページを表示したり、ユーザーのページリンクへのログインリンクの変更、サインアウトへのリンクの変更など)。このエラーは、ユーザーがrootからサインインしているときにも発生します。 – Exupery

+0

セッションコントローラコードを投稿できますか? – PhillipKregg

答えて

13

、私はセッションの設定でしょうあなたが必要となります

をすべてのあなたの行動にあなたの認証の前に実行されるフィルタの前に:

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

リダイレクトを変更するだけです。

redirect_back_or_default() 
+0

正確に私が探していたものです。 – Exupery

+0

ありがとう、ありがとう、StackOverflowの他の答えがうまくいきませんでした。 – kakubei

+0

うん。これは、優れた非デビッドソリューションです。それは私が見つけるのが苦労していたので、ここでコメントに「Deviseを使用しない」と入力するとわかりましたので、見つけやすくなりました! –

関連する問題