2011-08-08 17 views
0

いくつかの場所から、サービス条件が受け入れられているかどうかを確認しています。そうでない場合、ユーザーはサービス条項にリダイレクトされ、次にどこに行くのかに戻るべきです。なぜ私は 'request.referer'を使用していないのか説明することでこの問題を複雑にしたくありません。変数に格納されているパスがリダイレクトされません

私がやっていることはセッション[:return_to] =に戻るパスです。 tos_at:DEF current_user.update_attributesを(accept_terms_of_service

:へのサービスの用語が表示され、プロセスを受け入れる上でユーザーがクリックが向けられた後、次に

def index 
    if current_user.tos_at.nil? 
    session[:return_to] = 'answers path' 
    redirect_to terms_of_service_controller_index_path 
    end 
    ... 
end 

:だから...私は1つのコントローラで=> Time.now) redirect_toセッション[:return_to]私は取得しています次に

エンド:

"You are being redirected." 

これがブラウザに表示されても、何も起こりません。リダイレクトを変更した場合:

redirect_to answers_path 

正しいパスにリダイレクトされます。

ありがとうございました。

答えて

1

割り当てセッション[:return_to]適切:

session[:return_to] = answers_path 

answers_pathは、ヘルパーですので、あなたがセッション割り当てるときに[:return_to]「をanswers_path」のような値に、そのがありますページにリダイレクトしようとしています'answers_path'にあります。

これを行うための第二の方法は、セッション変更することではありません[を:return_to]割り当てる、しかし、

redirect_to send(session[:return_to]) 
+0

おかげで@Hckを

redirect_to session[:return_to] 

を交換します。これは完璧です。 – Jay

関連する問題