##ルーティングエラーがでた!!!!
簡易版ツイッターを作っていて、投稿画面で投稿を送った時に下記のエラーが出た。
結論から言うと、今回のエラーはツイートを投稿する時に呼び出されるルーティングの下記部分に":create,"(ツイートを新規作成するアクション)の記載がなかったために、tweetコントローラからcreateアクションを呼び出せないよと言うエラーでした。
では、どんな手順でエラーを解いていったのかをみていきましょう。
まず、エラー画面ではどんなことを言っているのだろうか。
頭の赤帯部分にRouting Errorと書いていることから、ルーティングに何らかのエラーが出ていることが考えられる。
さらにその下に
No route matches [POST] "/tweets"
と書いてあることから、"/tweets"ってところと[POST]がマッチしていないことが考えられるわけですね。
とりあえず、ターミナルで"rake routes"とうって設定されているルーティングを見てみましょう。
そうすると、今どんなルーティングが設定されているかがわかります。
この中から、[POST] "/tweets"の部分を探してみましょう。
............
............
............
??????????
この画像をしっかり探した人ならわかるかと思いますが、HTTPメソッドが[POST]でパスが"/tweets"のルーティングがありません。
つまり、ルーティングに今リクエストされている[POST] "/tweets"は存在しないわけです。
そこで、routes.rbを確認してみると案の定、tweetsコントローラを呼び出している
resources :tweets, only: [:index, :show, :new, :destroy, :edit, :update] do
この記載の中に、新しくツイートを作るためのcreateアクションが記載されていないですね。
これで、原因はわかりましたのであとはその記述を追加すれば良いわけです。
resources :tweets, only: [:index, :show, :new, :create, :destroy, :edit, :update] do
こうすることで、ツイートが正常に投稿されるようになりました。
念の為、ターミナルにもう一度rake routesをうって確認してみると
このように、[POST] "/tweets"が追記されています。
これで無事エラー解決です。
終わってみると簡単なエラーですが、初めのうちはどこを見れば良いかわからないのでパニックになりますよね。笑
まとまりませんが、こんな感じで今回は終わりたいと思います。