現在railsをつかってアプリの制作をしています。ネスト状態にあるコメントの編集画面に遷移しよう(edit)とする時にエラーが出てしまいます。なかなか前に進まず困っていまして、アドバイス等いただけますと嬉しいです。よろしくお願いします。
掲載されている案件(job)に対して口コミのような機能を持たせる為、状況としては下記の通りです。
・記事(jobsコントローラ)と設定
・口コミ(reviewsコントローラー)と設定
・ルーティングでjobsとreviewsをネストしている
・投稿された口コミの削除は問題なくできている
発生している問題・エラーメッセージ
3行目にエラーでています。おそらくeditに遷移する時にview_pathが引っ張れていないのだと思うのですが発生源を特定できずにいます。
undefined method `review_path' for #<#<Class:0x00007fcda33b19d8>:0x00007fcd86895980> Did you mean? view_paths Extracted source (around line #5): 3 .Review-wrapper__title 4 感想を教えて! 5 = form_with model: @review, html: {class: "Review-wrapper__form"}, local: true do |form| 6 .Review-box 7 .Review-box__good 8 【よかった点】 Rails.root: /Users/○○○○/self-website/web-haken Application Trace | Framework Trace | Full Trace app/views/reviews/edit.html.haml:5 Request Parameters: {"_method"=>"get", "authenticity_token"=>"yVlyBiAnosFAGlAx1r4ID1LuC4gdvHkju5ObZlZ+YwxgywZIMElVIg/+8lSypa58qqBE1FO4pIYPSOJ2gaYDnw==", "job_id"=>"5", "id"=>"29"}
該当のソースコード
(reviews/edit.html.haml)
rails
1.Wrapper 2 .Review-wrapper__title 3 感想を教えて! 4 = form_with model: @review, html: {class: "Review-wrapper__form"}, local: true do |form| 5 .Review-box 6 .Review-box__good 7 【よかった点】 8 = form.text_area :good, maxlength: 250, class: 'Review-box__text', placeholder: 'ここに文章を入力してください' 9 .Review-box__bad 10 【わるかった点】 11 = form.text_area :bad, maxlength: 250, class: 'Review-box__text', placeholder: 'ここに文章を入力してください' 12 .Review-button 13 = form.submit 'レビュー'
該当のルーティング
(routes.rb)
rails
1resources :jobs, only: [:index, :new, :create, :destroy, :edit, :update] do 2 resources :reviews, only: [:create, :destroy, :edit, :update] 3 end
###該当のコントローラー
(ReviewsController)
rails
1class ReviewsController < ApplicationController 2 def create 3 review = Review.create(review_params) 4 redirect_to "/matches/#{review.job_id}.reviews" 5 end 6 7 def destroy 8 review = Review.find_by(id: params[:id], job_id: params[:job_id]) 9 if review.present? 10 review.destroy 11 redirect_to "/matches/#{review.job_id}.reviews" 12 end 13 end 14 15 def edit 16 @review = Review.find_by(id: params[:id], job_id: params[:job_id]) 17 end 18 19 def update 20 review = Review.find_by(id: params[:id], job_id: params[:job_id]) 21 review.update(review_params) 22 end 23 24 25 private 26 def review_params 27 params.require(:review).permit(:good, :bad).merge(user_id: current_user.id, job_id: params[:job_id]) 28 end 29end 30
該当のprefix
(ターミナル)
rails
1 job_reviews POST /jobs/:job_id/reviews(.:format) reviews#create 2 edit_job_review GET /jobs/:job_id/reviews/:id/edit(.:format) reviews#edit 3 job_review PATCH /jobs/:job_id/reviews/:id(.:format) reviews#update 4 PUT /jobs/:job_id/reviews/:id(.:format) reviews#update 5 DELETE /jobs/:job_id/reviews/:id(.:format) reviews#destroy 6
該当のSQL
試したこと
エラー画面で出ているundefined method `review_path'がどのあたりなのかが予測できずにいます。。。
試したこと①
edi→updateだけなのでシンプルに下記のようにも試してみましたが、同じエラー内容表示となってしまいます。
rails
1 def edit 2 @review = Review.find(params[:id]) 3 end
試したこと②
form_with部分のみコメントアウトするとedit画面に遷移はします。
補足情報(FW/ツールのバージョンなど)
ruby '2.6.5' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 6.0.0' # Use mysql as the database for Active Record gem 'mysql2', '>= 0.4.4' # Use Puma as the app server gem 'puma', '~> 3.11' # Use SCSS for stylesheets gem 'sass-rails', '~> 5' # Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker gem 'webpacker', '~> 4.0' # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks gem 'turbolinks', '~> 5' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.7'
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。