前提・実現したいこと
コメント実装機能に取り組んでいます。showアクションのviewでコメントを投稿すると、下記のようなエラーになります。
このルーティングエラーを解決したいです。おそらく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
回答1件
あなたの回答
tips
プレビュー