100
93

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ruby on Rails 4 - 前のページにリダイレクト

Last updated at Posted at 2014-06-08

一般的に前のページにリダイレクトするには、以下のように書く。

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が使用できるので、その場合のみ使用するようになっています。

100
93
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
100
93

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?