3
0

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.

Rails+Ransack redirect時の検索クエリを引き継ぐ方法

Posted at

この記事では、redirect時に前のページの検索クエリを引き継いで、同じ検索結果を表示する方法について書きます。

######アプリの構造
細かく書きませんが、scaffoldで生成されるような
index=>edit=>update=>indexのフローとします。
ここで、update=>indexのredirect時に最初のindexの検索結果を保持してくれたら嬉しいなと考えました。

sample_controller.rb
def index
 (データの一覧表示、データの検索機能)
end

def edit
 (データの編集)
end

def update
 (データを更新してindexredirect)
end

#######解決策

sample_controller.rb

def index
・・・
end

def edit
・・・
  @@request_referer = request.referer
・・・
end

def update
・・・
respond_to do |format|
if @sample.update(sample_params)
  format.html { redirect_to @@request_referer, notice: '更新が完了しました。' }
else
  format.html { redirect_to @@request_referer, notice: '更新が失敗しました。' }
end
・・・
end

request.refererは、前画面のURLを呼び出すメソッドです。
editで前画面のindexのURL(検索クエリを含む)をグローバル変数@@request_refererとして格納します。
updateは、成功しても失敗しても@@request_refererにredirectさせます。
updateに失敗した後に、もう一度edit画面に遷移すると、グローバル変数が上書きされてしまいますのでご注意下さい。

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?