🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

4095閲覧

request.refererの使い方

k_akira

総合スコア1

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/12/23 13:50

遷移元のページによって挙動を振り分けたい

以前作成したフリマアプリで、クレジットカードの登録後の挙動をページの遷移元で振り分けたいと考えました。
現状
マイページ→カード登録→トップページ
商品購入ページ→カード登録→トップページ

修正後のイメージ
マイページ→カード登録→トップページ
商品購入ページ→カード登録→商品購入ページ

request.refererやredirect_backを使えば戻る事が出来るとqiitaで見かけたので試したのですが、

redirect_back(fallback_location: root_path) redirect_to request.referer

このどちらを書いても今開いている画面を再読み込みするような形となり、遷移前の画面に戻る事ができません。

考えた原因はrequest.refererがPostリクエストの前のページ、つまりカード登録ページになっているので、同じページを再読み込みしていると思ったのですが対処方法が分かりませんでした。
どのように対処すれば良いのかご教授頂けないでしょうか?

https://gyazo.com/e4000190cc54aaba8123ad469f4c422e

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

商品購入ページをセッションに記録しておいて、そこにリダイレクトするのはダメでしょうか。

商品購入ページ→トップページ→カード登録と移動されたときに
商品購入ページにリダイレクトされてしまうことになるので、
元に戻したくないページを見たときはセッションを削除、みたいな感じで。

古い記事ですが参考になると思います。

Railsでログイン前にいたページを維持する

追記

記事中の
before_filter は before_action に、
skip_before_filter は skip_before_action に変更されてますね。

投稿2020/12/23 14:57

編集2020/12/23 15:35
neko_daisuki

総合スコア2090

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問