ブログにコメントができて、コメントに対してリプライを送れるようなものを実装しようとしています
コメントの非同期通信はできていますが返信の非同期通信ができません。
コメントの作成はできます。
エラーとしてはreply_lists.html.erb
がおかしいよと言われています。
ActionView::Template::Error (undefined local variable or method `comment' for #<#<Class:0x00007f9f0c8aa7e8>:0x00007f9f0a198ce0>): 1: <div class = "reply"> 2: <% comment.replies.each.with_index(1) do |reply,i| %> 3: <div class="reply_box"> 4: <div class ="wrap"> 5: <div class = "wrap-l">
ご教授お願いしたいです????♀️
commentテーブル
name
content
blog_id(アソシエーション)
replyテーブル
name
content
comment_id(アソシエーション)
reply_controller.rb
class RepliesController < ApplicationController protect_from_forgery except: :create def create comment = Comment.find(params[:comment_id]) session[:comment_id] = comment.id @reply = Reply.new(reply_params) @reply.comment_id = session[:comment_id] if @reply.save render :reply_lists else render :reply_lists end end private def reply_params params.require(:reply).permit(:name, :content, :comment_id) end end
comment_lists.html.erb
<% @comments.each.with_index(1) do |comment,i| %> <!-- リプ表示 --> <% if comment.replies.present? %> <div class= "reply_lists"> <%= render :partial =>"replies/reply_lists", :locals => { comment: comment } %> </div> <% end %> <% end %> #@commentsは記事に紐づくコメント全部
reply_lists.html.erb
<div class = "reply"> <% comment.replies.each.with_index(1) do |reply,i| %> <div class="reply_box"> <div class ="wrap"> <div class = "wrap-l"> <div class = "id" id = "id_<%= i %>" ><%= i %></div> <%= reply.name %> </div> <div class = "date"><%= reply.created_at.strftime("%Y/%m/%d %H:%M")%></div> </div> <div class ="wrap"> <div class ="content"><%= reply.content %></div> <div id="like_rs_button_<%= reply.id %>"> <%= render :partial =>'like_rs/like_r', :locals => { reply: reply } %> </div> </div> </div> <% end %> </div>
reply_lists.js.erb
// 内容消してる $('textarea').val(''); $('input').val(''); $('.reply_lists').html('<%= j(render 'reply_lists') %>');
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。