30代プログラム初心者がWEBエンジニアになる

30代プログラム初心者が、WEBエンジニアになるまでの奮闘を書いていきます。

アクセスしたページ毎にリダイレクト先を変えたい

こんにちは、ぐっちと申します。

現在チーム開発中のアプリでは、ユーザーが住所登録をするのですが住所登録が出来るページが2箇所あり、アクションは全く同じなので使い回しをしたい、しかしそれぞれリダイレクト先が違うので、そこはうまく分岐をさせたいと思い色々調べました。

 

アドレスを登録する addresses#create アクションが動いた時に、アクセスしたページが分かれば分岐出来そうなので、

request.fullpath

 を使用したら出来るかと思いましたが、これは現在の path を取得するものなので、addresses#create アクションが動いた時のpathは '/addresses' でアクセスしたページに関わらず同じで、分岐させる事は出来ませんでした。

 

addresses#create アクションを動かした前の path が取得できれば良いのですが、そんな都合のいいものがあるのかと思っていると……ありました。

 

なんと、遷移元のcontrollerを取得する方法があり

Rails.application.routes.recognize_path(request.referer)[:controller]

と記述すると、例えばマイページで登録した場合

mypages コントローラで表示させているので、'mypages' が返って来て、

if Rails.application.routes.recognize_path(request.referer)[:controller] == "mypages"

 という様に条件に指定出来てリダイレクト先の分岐が出来ました。

 

調べると本当に色々な事がメソッドによって実現出来て、見つけられるかによってスマートなコードに変わるものだと実感しました。

 

ここまで読んでくださり、ありがとうございました。

 ツイッターで日々の学習をつぶやいています

@Yamaguc45844169