22
19

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 5 years have passed since last update.

エラー解決Routing Error No route matches

Posted at

##ルーティングエラーがでた!!!!

簡易版ツイッターを作っていて、投稿画面で投稿を送った時に下記のエラーが出た。

スクリーンショット 2019-07-02 22.13.24.png

結論から言うと、今回のエラーはツイートを投稿する時に呼び出されるルーティングの下記部分に":create,"(ツイートを新規作成するアクション)の記載がなかったために、tweetコントローラからcreateアクションを呼び出せないよと言うエラーでした。

スクリーンショット 2019-07-02 22.38.14.png

では、どんな手順でエラーを解いていったのかをみていきましょう。

まず、エラー画面ではどんなことを言っているのだろうか。

頭の赤帯部分にRouting Errorと書いていることから、ルーティングに何らかのエラーが出ていることが考えられる。

さらにその下に
No route matches [POST] "/tweets"
と書いてあることから、"/tweets"ってところと[POST]がマッチしていないことが考えられるわけですね。

とりあえず、ターミナルで"rake routes"とうって設定されているルーティングを見てみましょう。
スクリーンショット 2019-07-02 22.23.24.png
そうすると、今どんなルーティングが設定されているかがわかります。
この中から、[POST] "/tweets"の部分を探してみましょう。

............
............
............
??????????

この画像をしっかり探した人ならわかるかと思いますが、HTTPメソッドが[POST]でパスが"/tweets"のルーティングがありません。

つまり、ルーティングに今リクエストされている[POST] "/tweets"は存在しないわけです。

そこで、routes.rbを確認してみると案の定、tweetsコントローラを呼び出している

routes.rb
resources :tweets, only: [:index, :show, :new, :destroy, :edit, :update] do

この記載の中に、新しくツイートを作るためのcreateアクションが記載されていないですね。

これで、原因はわかりましたのであとはその記述を追加すれば良いわけです。

routes.rb
resources :tweets, only: [:index, :show, :new, :create, :destroy, :edit, :update] do

こうすることで、ツイートが正常に投稿されるようになりました。

念の為、ターミナルにもう一度rake routesをうって確認してみると
スクリーンショット 2019-07-02 23.11.40.png
このように、[POST] "/tweets"が追記されています。

これで無事エラー解決です。

終わってみると簡単なエラーですが、初めのうちはどこを見れば良いかわからないのでパニックになりますよね。笑

まとまりませんが、こんな感じで今回は終わりたいと思います。

22
19
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
22
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?