『form_withでのNoMethodErrorで困っています』
現在protospaceというアプリ作成中です
投稿した(作成した)プロトタイプに対してコメントを投稿できるのですが、
このコメント投稿実装中に次の画像の様なエラーが発生しました
https://gyazo.com/b23aebfda51c93301e408bce4052f98d
具体的にはソースコード4つめの”_prototype.html.erb”にて
3つあるリンクのうち、上2つがprototype詳細画面に遷移するものなのですがそちらをクリックすると
上の様なエラーが表示されます
発生している問題・エラーメッセージ
NoMethodError in Prototypes#show undefined method `prototype_comments_path' for #<#<Class:0x00007fe894c66f18>:0x00007fe8944bc600> Did you mean? prototype_path
該当のソースコード
prototypes_controller.rb
class PrototypesController < ApplicationController def index @prototype = Prototype.all.includes(:user) end def new @prototype = Prototype.new end def create @prototype = Prototype.new(prototype_params) if @prototype.save redirect_to root_path else render :new end end def show @prototype = Prototype.find(params[:id]) @comment = Comment.new @comments = @prototype.comments.includes(:user) end def edit @prototype = Prototype.find(params[:id]) end def update prototype = Prototype.find(params[:id]) if prototype.update(prototype_params) redirect_to prototype_path(prototype.id) else @prototype = Prototype.find(params[:id]) render :edit end end def destroy @prototype = Prototype.find(params[:id]) @prototype.destroy redirect_to root_path end private def prototype_params params.require(:prototype).permit(:title, :catch_copy, :concept, :image).merge(user_id: current_user.id) end end
comments_controller.erb
class CommentsController < ApplicationController def create @comment = Comment.new(comment_params) if @comment.save redirect_to prototype_path(@comment.prototype.id) else @prototype = @comment.prototype @comments = @prototype.comments render "prototypes/show" end end private def comment_params params.require(:comment).permit(:text).merge(user_id: current_user.id, prototype_id: params[:prototype_id]) end end
prototypes/index.html.erb
<main class="main"> <div class="inner"> <%# ログインしているときは以下を表示する %> <% if user_signed_in? %> <div class="greeting"> こんにちは、 <%= link_to "#{current_user.name}さん", user_path(current_user.id), class: :greeting__link%> </div> <% end %> <%# // ログインしているときは上記を表示する %> <div class="card__wrapper"> <%# 投稿機能実装後、部分テンプレートでプロトタイプ投稿一覧を表示する %> <%= render partial: 'prototype', collection: @prototype %> </div> </div> </main>
_prototype.html.erb
<div class="card"> <%= link_to image_tag(prototype.image, class: :card__img ), prototype_path(prototype.id) %> <div class="card__body"> <%= link_to "prototype.title", prototype_path(prototype.id), class: :card__title%> <p class="card__summary"> <%= "prototype.catch_copy" %> </p> <%= link_to "by #{prototype.user.name}", user_path(prototype.user_id), class: :card__user %> </div> </div>
試したこと
エラー文通り、form_with内のモデルを色々変えてみたりしました。
prototypesコントローラー内のshowアクションも見直しました
※コメント機能追加以前ではこのようなエラーは発生せず、リンクから詳細ページに飛べていました
お力貸していただけると助かります
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/03 14:14 編集
2021/04/04 06:40