一般的に前のページにリダイレクトするには、以下のように書く。
redirect_to :back
直接URLを入力してページ移動した時にはエラーがでてうまくいかない場合があるので、application_controller.rbに、下記を追加する
1.before_filterでリクエスト保存用のメソッドset_request_fromが実行されるように設定しておく
app/controllers/application_controller.rb
before_filter :set_request_from
2.前のページを保存しておく用のメソッドset_request_fromを追記する。
app/controllers/application_controller.rb
# どこのページからリクエストが来たか保存しておく
def set_request_from
if session[:request_from]
@request_from = session[:request_from]
end
# 現在のURLを保存しておく
session[:request_from] = request.original_url
end
3.前のページに戻る用のメソッドreturn_backを追記する。
app/controllers/application_controller.rb
# 前の画面に戻る
def return_back
if request.referer
redirect_to :back and return true
elsif @request_from
redirect_to @request_from and return true
end
end
※2016年2月9日修正
前の画面に戻った時はtrueを返してあげる。これでコントローラー内で
return_back and return
のような書き方ができる。
前のページに戻るには下記のreturn_backメソッドを使用するようにする
request.refererがある場合には:backが使用できるので、その場合のみ使用するようになっています。