前提・実現したいこと
コメント機能の実装をしている。
コメントを投稿させたい。
発生している問題・エラーメッセージ
コメントを投稿すると以下のNoMethodErrorが出る
NoMethodError in Prototypes#show Showing /Users/daisuke/projects/protospace-31648/app/views/prototypes/show.html.erb where line #36 raised: undefined method `comment_prototype_path' for #<#<Class:0x00007f97739a5440>:0x00007f976f356c28> Did you mean? prototype_comments_path
該当のソースコード
ruby
1#routes.rb 2 3devise_for :users 4 root to: "prototypes#index" 5 resources :prototypes do 6 resources :comments, only: [:create] 7 end
ruby
1#comments_controller.rb 2 3def create 4 @comment = Comment.new(comment_params) 5 if @comment.save 6 redirect_to prototype_path(@comment.prototype) 7 else 8 render :show 9 end 10 11 12 end 13 14 private 15 16def comment_params 17 params.require(:comment).permit(:text).merge(user_id: current_user.id, prototype_id: params[:prototype_id]) 18end 19 20end 21
ruby
1#prototypes_controller.rb 2 3def index 4 @prototypes = Prototype.all 5 end 6 7 def new 8 @prototype = Prototype.new 9 end 10 11 def create 12 if Prototype.create(prototype_params) 13 redirect_to root_path 14 else 15 render :new 16 end 17 end 18 19 def show 20 @prototype = Prototype.find(params[:id]) 21 end 22 23 def edit 24 @prototype = Prototype.find(params[:id]) 25 end 26 27 def update 28 prototype = Prototype.find(params[:id]) 29 if prototype.update(prototype_params) 30 redirect_to prototype_path 31 else 32 render :edit 33 end 34 end 35 36 def destroy 37 prototype = Prototype.find(params[:id]) 38 if prototype.destroy 39 redirect_to root_path 40 end 41 end 42 43 private 44 45 def prototype_params 46 params.require(:prototype).permit(:title, :catch_copy, :concept, :image).merge(user_id: current_user.id) 47 end 48
ruby
1#show.html.erb 2 3<% if current_user %> 4 <%= form_with(model: [@comment, @prototype], local: true) do |f|%> 5 <div class="field"> 6 <%= f.label :text, "コメント" %><br /> 7 <%= f.text_field :text %> 8 </div> 9 <div class="actions"> 10 <%= f.submit "送信する", class: :form__btn %> 11 </div> 12 <% end %> 13 <% end %>
試したこと
show.html.erbのform_withで渡されるモデル名のメソッドが正しく作られていないと思ったので、comments_controller.rbのcreateアクションを確認したが問題はなさそう。
補足情報(FW/ツールのバージョンなど)
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。