##1.はじめに
今回は私が体験したエラーについての原因や解説を書いています
参考になるかどうか話わかりませんがよろしくお願いします。
##2.エラー内容
Routing Error
No route matches [POST] "/tweets/search"
今回はツイートアプリにて投稿したツイートを検索しようとして起こったエラーです。
##3.エラー解説
まず一行目のRouting Errorですがこれが出たらルーティングが正しく設定できているかどうか
rails routesを使い確認します
この中から**"/tweets/search/"のパスを探してみると
sarch_tweetsの隣のHTTPメソッドがGET**になっています。しかし今回は検索結果を表記したいのでHTTPメソッドはGETで正しいです
このことから今回のエラーは間違ったHTTPメソッドを定義しているのではないか、間違ったリクエストを送信してしまっているのではないかという仮説が立てれます。
##4.エラー解決
それでは実際にコードを見てみましょう。
リクエストが送られるときは検索ボタンを押したときなのでtweetsフォルダのindex.html.erbに着目したいと思います。
<%= form_with(url: search_tweets_path, local: true, method: :post, class: "search-form") do |form| %>
HTTPメソッドを定義しているところをみてもらうとmethod: :postとなっています。
先ほども確認した通り、今回は検索結果を表記したいので指定するHTTPメソッドはGETのはずです
つまり今回は間違ったリクエストを送ってしまっていたということになります。
<%= form_with(url: search_tweets_path, local: true, method: :get, class: "search-form") do |form| %>
このように今回のエラーはHTTPメソッドをgetにすることで解消できます。