ファイルで次のように定義していapplication_controller.rb
ます。
def redirect_back_or(default)
redirect_to(session[:return_to] || default)
session.delete(:return_to)
end
def store_location
session[:return_to] = request.url
end
def after_sign_in_path_for(resource)
r = session[:return_to] || user_root_url
session.delete(:return_to)
r
end
ユーザーをサインイン前の元の場所に戻そうとしています。場所が保存されていない場合は、ユーザーをルート ページに戻そうとしています。
これをコントローラーの 1 つで呼び出します。
if current_user.nil?
store_location
redirect_to home_login_url, alert: "You must be logged in to purchase subscriptions"
return
end
デバッガーをステップ実行してsession[:return_to]
get set を監視しましたが、ログオンしてafter_sign_in_path_for(resource)
呼び出された後、session[:return_to]
null になります。
return_to
ログイン後も変数を永続化するにはどうすればよいですか?
Rails 3.2.1 と Devise 2.1.2 を実行しています