0
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 1 year has passed since last update.

destroy action実行時にcouldn't Item find with 'id'=1のエラー表示

Last updated at Posted at 2022-05-05

はじめに

 実装中のフリマアプリにて、「ログイン状態の場合にのみ、自身が出品した商品情報を削除できること」という実装条件に合わせて記述したのち、商品詳細ページから削除ボタンをクリックすると、下記のエラーが発生しました。
結論、エラー内容とは関係なく、destroyアクション処理後の挙動を記述していないことが原因のようでした。
スクリーンショット 2022-05-05 18.34.42.png
 上記エラー文を確認すると、 「ItemsControllerに記載しているdestoroy actionを実行したがid1が見当たらない」といった指摘がされているようでした。

仮説・検証

仮説1

 エラー文の通り、idが受け渡されていない事が原因でエラーが発生しているのではという仮説のうえ、MVCの流れに沿って下記の検証作業を行いました。

検証1(仮説1に対して)

 はじめに、routes.rbを確認すると、resoucesメソッドを用いてdestroyを含む7つのアクションを記述済みあることを確認しました。また、ターミナルにてrails routesを実行すると、URI Patternに:idが記載されていた為、ルーティングの問題ではないと考え、検証2に移りました。
スクリーンショット 2022-05-05 18.54.42.png

検証2(仮説2に対して)

 controllerを確認すると、bofore actionにonly optionを用いてdestoroyを指定済みであり、idは受け渡されているようでした。
スクリーンショット 2022-05-05 19.06.24.png
 また、取得した情報に対してdestroyメソッドも記述済であり、エラー文の原因になるような箇所は見当たりませんでした。
スクリーンショット 2022-05-05 19.08.36.png

仮説2

 先ほどの仮説では解決できず、再度MVCの流れから再考しました。viewの処理はどうかという点について考えると、destroyアクションは処理が終わると自動的にviewsディレクトリ内のビューを呼び出すという基本を思い出しました。

検証1(仮説2に対して)

 redirect_toメソッドを使用し、root_pathを指定する事で、商品情報を削除する処理を正常に完了できました。
スクリーンショット 2022-05-05 19.16.49.png

おわりに

 現在プログラミングスクールの最終課題であるフリマアプリの実装を行なっており、本投稿がQiitaでの初めての投稿となりました。
複雑なエラーかと思いきや、今回のような単純ミスによるエラー経験も、改めて基礎が大事であるということを学ぶ機会になりました。未経験からのエンジニア転職ではありますが、基礎的なミスを無くす事で、より迅速で安定したアプリ開発を行えるエンジニアとしてのスタートを切り、夢に向かって常に成長し続けるクリエイティブなエンジニアに必ずなりたいと思います。
 記事内に修正すべき点等ありましたら、ご指摘いただけると幸いです。今後ともよろしくお願いします。

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