一般的に前のページにリダイレクトするには、以下のように書く。
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
が使用できるので、その場合のみ使用するようになっています。