0
1

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

Ruby on Rails のルーティングエラー

Posted at

##1.はじめに
今回は私が体験したエラーについての原因や解説を書いています
参考になるかどうか話わかりませんがよろしくお願いします。

##2.エラー内容

Routing Error

No route matches [POST] "/tweets/search"

今回はツイートアプリにて投稿したツイートを検索しようとして起こったエラーです。

##3.エラー解説
まず一行目のRouting Errorですがこれが出たらルーティングが正しく設定できているかどうか
rails routesを使い確認しますスクリーンショット 2021-03-29 19.04.25.png

この中から**"/tweets/search/"のパスを探してみると
sarch_tweetsの隣のHTTPメソッドが
GET**になっています。しかし今回は検索結果を表記したいのでHTTPメソッドはGETで正しいです

このことから今回のエラーは間違ったHTTPメソッドを定義しているのではないか間違ったリクエストを送信してしまっているのではないかという仮説が立てれます。

##4.エラー解決

それでは実際にコードを見てみましょう。
リクエストが送られるときは検索ボタンを押したときなのでtweetsフォルダのindex.html.erbに着目したいと思います。

views/tweets/index.html.erb
<%= form_with(url: search_tweets_path, local: true, method: :post, class: "search-form") do |form| %>

HTTPメソッドを定義しているところをみてもらうとmethod: :postとなっています。
先ほども確認した通り、今回は検索結果を表記したいので指定するHTTPメソッドはGETのはずです

つまり今回は間違ったリクエストを送ってしまっていたということになります。

views/tweets/index.html.erb
<%= form_with(url: search_tweets_path, local: true, method: :get, class: "search-form") do |form| %>

このように今回のエラーはHTTPメソッドをgetにすることで解消できます。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?