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

【解決方法】No route matches {:action=> "show", controller=> "articles", id=>nil}, missing required keys: [id] とは?

Posted at

Ruby on rails を学習中の方の参考にしてもらえたら嬉しいです。
アプリケーションを作成している時に出てくるエラーとその解決方法について掲載します。少しでも参考にしていただけると幸いです。
今回のエラーではNo route matches {:action=> "show", controller=> "articles", id=>nil}, missing required keys: [id]というエラーの解決方法をお話しします。

スクリーンショット 2023-05-29 6.28.34.png
上記のエラーを解決していきます。

エラーまでの流れ

アプリケーション内の記事を削除した後、今までトップページに画面遷移してしまっていたので、記事一覧画面にページ遷移するようにコードを変えました。
以下の画像のようにredirect_to root_path,と書くとTOPページに戻るようにルーティングがされています。
スクリーンショット 2023-05-29 6.44.14.png
このルーティングを変えたらエラーが出てしまいました。
▼変更したコードは以下の画像です。
スクリーンショット 2023-05-29 6.36.42.png
上記のようにredirect_to article_path(@article)としましたが、
スクリーンショット 2023-05-29 6.28.34.png
上記のようなエラーが出ました。

エラーの解決方法

▼エラーを詳しく見るためにChatGPTに質問します
スクリーンショット 2023-05-29 6.37.19.png

色々試しましたが、解決方法はシンプルでした。
要はルーティングが正しくないということです

スクリーンショット 2023-05-29 6.33.17.png

http://localhost:3000/rails/info/routesで、routesを確認します。

今変更したredirect_to article_path(@article)というのは削除した記事に画面遷移させているということになってしまうのでエラーが出ていました。

なのでredirect_to articles_path(@article)というようにsを足してarticlesのindexに遷移するようにパスを変更しました。

▼変更したのち、削除ボタンを押してみる
スクリーンショット 2023-05-29 6.38.08.png

▼記事一覧画面に遷移しました
スクリーンショット 2023-05-29 6.38.22.png

最後に

ということで、今回は投稿した記事を削除した後の画面遷移で出たエラーを解決しました。
ルーティングを確認すると解決できることもあるので見直しが必要ですね。
そして、ChatGPTに聞くとエラーのアタリをつけてくれるので、エラー解決までの時間が短縮されたように感じます。

いかがでしたでしょうか?
他にも記事を発信していきますので、私の QiitaやTwitterをフォローしていただけると嬉しいです。
個別の質問もぜひ歓迎します。
私自身、初学者ではありますが、1歩先を行くものとして回答できたらと思います。
それでは。

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