現在Railsで非同期コメント処理を実装しています。以下のような状態になり、コメント自体はできるのですがレスポンスがHTML形式で返ってきてしまっています。
これをなんとかJS形式で実装したいです。ご教授いただけると幸いです????♂️
ちなみに削除部分はJS形式になっております。
コード
流れとしてはshow.html.erbでコメントを投稿するとbookcommentsコントローラーにいき、create.jsに行ってJS形式のレスポンスを返すという感じです。
bookcommentコントローラー↓
class BookCommentsController < ApplicationController before_action :authenticate_user! def create @comment = current_user.book_comments.new(comment_params) @comment.book_id = params[:book_id] @comment.save redirect_to request.referer end ~~ private def comment_params params.require(:book_comment).permit(:body) end end
show.html.erb↓
<div class='row'> ~~ <div class='col-xs-9'> <h2>Book detail</h2> <div class="detail__table"> <%= render 'detail', book: @book %> </div> <%= form_with(model: [@book, @comment]) do |f|%> <%= f.text_area :body, id: "comment__textarea" %> <%= f.submit "送信", class: "btn btn-primary" %> <% end %> <div class="comment__table"> <%= render 'book_comments/table', book_comments: @book.book_comments %> </div> </div> </div>
bookcomments/_tabel.html.erb↓
<table> <% book_comments.each do |comment| %> <tr> <td><%= attachment_image_tag(comment.user, :profile_image, size: "100x100", fallback: "no-image-icon.jpg") %></td> <td><%= comment.body %></td> <td><%= link_to "削除", book_comment_path(comment), method: :delete, class: "btn btn-danger", remote: true%></td> </tr> <% end %> </table>
_create.js.erb↓
$('#comment__textarea').val('') $('.detail__table').html("<%= j(render 'books/detail', book: comment.book) %>") $('.comment__table').html("<%= j(render 'book_comments/table', book_comments: comment.book.book_comments ) %>")
足りない情報などありましたら、教えていただけるとありがたいです????♂️
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。