17
9

【Advent Calendar Challenge 8日目】「status: :see_other」を忘れて数日溶かした話

Last updated at Posted at 2023-10-06

こんにちは、プログラミング初学者のみんみんです。
私は現在「RUNTEQ」というプログラミングスクールでRailsを学習しています。
今回お話しするのはとあるコードをつけ忘れ、数日もの時間を無駄にした経験談についてです。

そのコードの名は…

ある日のこと、私はいつも通りRUNTEQの課題を進めていました。
進捗はあまり良いとはいえず、

わけの分からないエラーが出る
↓
ググりまくって何とか直す
↓
安心
↓
またわけの分からないエラーが出る

を繰り返していました。
でも、ひとまず調べれば何とかできるエラーだったためまだマシな状況だったのです。

そんなとき、掲示板の削除機能をようやく実装し終えてみると、画面にエラーが。

どうやら削除機能のルーティングが無いようです。

私「あれ?ルーティングがおかしいのかな?設定したはずなんだけど…」

この手のエラーは何度か見たことがあったので「どうせルーティング設定し忘れたんだろう」と思っていました。

それから数日後。

いくらルーティングを直してもエラーが解決することはなく、とうとうChatGPTも 「以下の項目を確認してください(箇条書きズラー)」 しか言わなくなりました。

数日悩んだ挙句、同期のめっちゃできるマンさん(無許可のためお名前は伏せております)に聞きに行ったところ、わずか数秒で解決しました。

原因は以下のコードの書き忘れだったのです。

「status: :see_other」とは?

「status: :see_other」とは、destoryアクションでTurboを使うために必要なコードです。

たとえば、コントローラーのdestroyアクションにて以下のように使います。

redirect_to ◯◯(リダイレクトさせたいパス先), status: :see_other

Rails7からHotwireというフレームワークが搭載されたことで、Turboという技術がデフォルトで機能するようになりました。

どうやらこのTurboが便利な分ややこしい存在で、「status: :see_other」を入れないと予期せぬ悪さをするようです。
今回のエラーも、ルーティングの設定が合っていたにもかかわらず発生していました。

※なお、「redirect_to」ではなく「button_to」を使えば「status: :see_other」はいらないそうです。

destroyアクションでは 「status: :see_other」つけたか必ず確認しよう

Railsの勉強を始めたてのときは、何が何だか分からなくて大変なことも多いですよね。
私もまだまだ初学者ですが、今回の体験談で救われる方が一人でもいらっしゃればこんなに嬉しいことはありません。

私みんみんの今後について興味のある方は、以下にてフォローをお願いします!
Qiita

17
9
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
17
9