LoginSignup
0
1

More than 3 years have passed since last update.

before_action と redirect_to   〜リダイレクトが繰り返し行われないようにするには〜

Last updated at Posted at 2020-08-11

【概要】

1.結論

2.ループになるのはどういう時か

3.なぜループになるのか

4.どのように解決し、使うのか

5.ここから学んだこと

1.結論

[:except]を使う。

2.ループになるのはどういう時か

I)def indexに行く前にbefore_action :goindexが行われます。
II)そうすると定義先に設定されている goindexにあるindexが行われます。
III)そうなるとredirection_toというのはroutes(ルーティング)に戻り、
ルーティングのアクションはindexになります。
IV)そうなると、また1:が繰り返され無限ループとなります!

スクリーンショット 2020-08-11 22.25.44.png
スクリーンショット 2020-08-11 22.30.43.png

無限ループすると、更新ボタンを押した際に
”リダイレクトが繰り返し行われました”とメッセージがでます。

本来無限ループはプログラミング用語なので、まさにこの状況のことですね

3.なぜループになるのか

ルーティングに設定されているアクション と   
redirect_toのアクションが永遠と
繰り返されるために起こります!

4.どのように解決し、使うのか

before_action :goindexの
あとにexcept:[:index]とすれば解決できます!
[:index]は”省きますよ!”という意味なので、
”def index”しか行われません!

5.ここから学んだこと

I)”リダイレクトが繰り返し行われました”とメッセージがでた際は
まっさきに無限ループを疑う癖がつきました!

II)そもそもルーティングからコントローラーに行く際に
おかしいことがわかるのでMVCモデルがきちんとわかっていたことも
エラー解決の時間短縮につながりました!

0
1
1

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