質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

Q&A

解決済

1回答

1591閲覧

コメントを投稿すると「Routing Error No route matches [POST] 」というルーティングエラーになる

akaki

総合スコア15

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

ルーティング

ルーティングとは、TCP/IPネットワークにおいて、目的のホストまでパケットを送る為のパス選定のプロセスを言います。

0グッド

1クリップ

投稿2020/05/14 13:38

編集2020/05/14 21:27

前提・実現したいこと

コメント実装機能に取り組んでいます。showアクションのviewでコメントを投稿すると、下記のようなエラーになります。

コメント投稿時のエラーのGif動画

ルーティングエラーの画像

このルーティングエラーを解決したいです。おそらくform_withのコードの設定か、Controllerの設定でミスがあるのだと思います。ご教授いただけますと幸いです。

発生している問題・エラーメッセージ

Routing Error No route matches [POST] "/cafeterias/6"

該当のソースコード

ShowHtmlHaml

1.container 2 - if current_user 3 = form_with model: [@cafeteria, @comment], class: "form", url: "/cafeterias/#{@cafeteria.id}", method: :post, local: true do |f| 4 .field 5 = f.label :text, "コメントを投稿する", class: "label" 6 = f.text_area :text, placeholder: "コメント内容", rows: "3" 7 = f.submit "SEND", class: "comment-btn" 8 - else 9 %strong 10 %p ※※※ コメントの投稿には新規登録/ログインが必要です ※※※ 11 .comments

CafeteriaController

1 def show 2 @user = current_user 3 @cafeteria = Cafeteria.find(params[:id]) 4 @comment = Comment.new 5 @comments = @cafeteria.comments.includes(:user) 6 end

routes

1Rails.application.routes.draw do 2 devise_for :users 3 root to: "top#index" 4 resources :top, only: :index 5 resources :cafeterias do 6 resources :comments, only: :create 7 end 8 resources :users, only: [:show, :edit, :update] 9end

<追記:rails routes>

Prefix Verb URI Pattern Controller#Action new_user_session GET /users/sign_in(.:format) devise/sessions#new user_session POST /users/sign_in(.:format) devise/sessions#create destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy new_user_password GET /users/password/new(.:format) devise/passwords#new edit_user_password GET /users/password/edit(.:format) devise/passwords#edit user_password PATCH /users/password(.:format) devise/passwords#update PUT /users/password(.:format) devise/passwords#update POST /users/password(.:format) devise/passwords#create cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel new_user_registration GET /users/sign_up(.:format) devise/registrations#new edit_user_registration GET /users/edit(.:format) devise/registrations#edit user_registration PATCH /users(.:format) devise/registrations#update PUT /users(.:format) devise/registrations#update DELETE /users(.:format) devise/registrations#destroy POST /users(.:format) devise/registrations#create root GET / top#index top_index GET /top(.:format) top#index cafeteria_comments POST /cafeterias/:cafeteria_id/comments(.:format) comments#create cafeterias GET /cafeterias(.:format) cafeterias#index POST /cafeterias(.:format) cafeterias#create new_cafeteria GET /cafeterias/new(.:format) cafeterias#new edit_cafeteria GET /cafeterias/:id/edit(.:format) cafeterias#edit cafeteria GET /cafeterias/:id(.:format) cafeterias#show PATCH /cafeterias/:id(.:format) cafeterias#update PUT /cafeterias/:id(.:format) cafeterias#update DELETE /cafeterias/:id(.:format) cafeterias#destroy edit_user GET /users/:id/edit(.:format) users#edit user GET /users/:id(.:format) users#show PATCH /users/:id(.:format) users#update PUT /users/:id(.:format) users#update

試したこと

ちなみに、railsの不具合か何かで、

= form_with model: [@cafeteria, @comment], local: true do |f|

にしても違うエラーになります。
この方法は使わず、今回のform_withの設定をアレンジして解決したいです。
宜しくお願いいたします

補足情報(FW/ツールのバージョンなど)

rails 5.2.4.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2020/05/14 21:23

rails routes を見せてください
akaki

2020/05/14 21:24 編集

わかりました、準備します!
akaki

2020/05/14 21:28

rails routesの追記が完了しました。宜しくお願いいたします。
guest

回答1

0

ベストアンサー

cafeteria_comments POST /cafeterias/:cafeteria_id/comments(.:format)
これが使うべき routesです。
url: "/cafeterias/#{@cafeteria.id}" だと違いますよね。

url: "/cafeterias/#{@cafeteria.id}/commentes"でもよいですが
cafeteria_comments(@cafeteria)` の方が読みやすいです。

投稿2020/05/14 21:31

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akaki

2020/05/14 21:40

url: "/cafeterias/#{@cafeteria.id}/comments" こちらに修正したところ、無事送信することができました!ありがとうございました。 また、cafeteria_comments(@cafeteria)にするとrailsの不具合か何かでエラーになってしまいます。 なので、今回は「url: "/cafeterias/#{@cafeteria.id}/comments"」で進めたいと思います。 ありがとうございました!
winterboum

2020/05/14 21:44

ごめん、 cafeteria_comments_path でした
akaki

2020/05/14 21:58

大丈夫です!笑 すぐ修正できました!いつもありがとうございます。大変助かっています????‍♂️
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問