非同期通信でコメント機能を実装したい
Ruby on railsで記事投稿アプリを作成しています。
非同期通信でコメントを表示させたいのですが、途中の段階でレスポンスをコンソール上で確認しようとしているのですが、ブラウザが遷移してパラムスのみが表示される状態になってしまいコンソールに表示する事ができません。
初心者でわからないことばかりで、大変恐縮ですが解決方法をご教示いただけると幸いです。
なお、非同期でない通常のコメント機能は実装済です。
発生している問題・エラーメッセージ
該当のソースコード
ruby
1class CommentsController < ApplicationController 2 def create 3 @article = Article.find(params[:article_id]) 4 @comment = Comment.new(comment_params) 5 if @comment.save 6 render json: {comment: @comment} 7 end 8 end 9 10 private 11 12 def comment_params 13 params.require(:comment).permit(:text).merge(user_id: current_user.id, article_id: params[:article_id]) 14 end 15end
ruby
1function post (){ 2 const submit = document.getElementById("submit_btn"); 3 submit.addEventListener("click", (e) => { 4 const formData = new FormData(document.getElementById("new_comment")); 5 const XHR = new XMLHttpRequest(); 6 XHR.open("POST", "/articles/:article_id/comments", true); 7 XHR.responseType = "json"; 8 XHR.send(formData); 9 XHR.onload = () => { 10 console.log(XHR.response.comment) 11 }; 12 e.preventDefault(); 13 }); 14} 15 16window.addEventListener('load', post);
ruby
1<div class="article-show-wrap"> 2 <div class="article flex-column"> 3 4 <div class="article-imgs pt-4 text-center"> 5 <%= image_tag @article.image.variant(resize: '700x500'), class:"article-box-img" %> 6 </div> 7 8 <section> 9 <% if user_signed_in? %> 10 <%if current_user.id == @article.user_id %> 11 <div class="buttons text-right mt-1"> 12 <%= link_to 'edit', edit_article_path, method: :get, class: "btn btn-outline-info shwbtn" %> 13 <%= link_to 'delete', article_path(@article), method: :delete, class:'btn btn-outline-danger shwbtn' %> 14 <% end %> 15 <% end %> 16 </section> 17 18 <section> 19 <h2 class="name text-center"> 20 <%= @article.title %> 21 </h2> 22 <div class="col-6 mx-auto"> 23 <div class="detail-article"> 24 <%= @article.memo %> 25 </div> 26 </div> 27 </section> 28 29 <section class="details mt-4"> 30 <h6 class="name text-center">been @ 31 <%= @article.place %> 32 </h6> 33 <h6 class="name text-center">date : 34 <%= @article.date %> 35 </h6> 36 </section> 37 </div> 38 39 <div class="comment-column flex-column m-5"> 40 <h4 class="text-center"> Comments <i class="far fa-comments"></i></h4> 41 <div class="col-5 mx-auto"> 42 <%= form_with model: [@article, @comment], local: true do |form| %> 43 <%= form.text_field :text, id:"new_comment", class:"comment-text-form", placeholder:"add a comment..." %> 44 <%= form.submit "post", class:"btn btn-sm btn-info", id:"submit_btn" %> 45 <% end %> 46 </div> 47 <% if @comments %> 48 <div class="comments", id="comments"> 49 <% @comments.each do |comment| %> 50 <div class="comment-case col-6 mx-auto m-1 case", id="comment_case"> 51 <strong class="h6"><%= link_to comment.user.nickname, "/users/#{comment.user_id}", classs: "comment-name" %> : </strong> 52 <p class="h6"><%= comment.text%></p> 53 <p class="text-right"><%= comment.created_at.strftime("%Y/%m/%d %H:%M") %></p> 54 </div> 55 <% end%> 56 </div> 57 <% end %> 58 </div> 59</div>
回答1件
あなたの回答
tips
プレビュー