前提・実現したいこと
railsでチャットアプリを作成しております。
コメント部分の非同期通信を行っております。
送信ボタンを押してコメントを送信してもコンソール上で下記のエラーが起きてしまいます。
500なのでjsonの記述がおかしいと思い見直したのですが、うまくいきませんでした。
ご教授いただけることがありましたら、何卒宜しくお願いいたします。
発生している問題・エラーメッセージ
console
1POST http://localhost:3000/teams/1/comments 500 (Internal Server Error)
該当のソースコード
comment.js
jquery
1$(function(){ 2 3 function buildHTML(comment){ 4 var html = `<div class="comments__comment"> 5 <div class="comments__comment__text"> 6 <p> ${comment.comment} </p> 7 </div> 8 <div class="comments__comment__info"> 9 <div class="comments__comment__info__name"> 10 <%= link_to ${comment.user.name}, user_path(${comment.user}) %> 11 </div> 12 <div class="comments__comment__info__time"> 13 ${comment.created_at} 14 </div> 15 </div> 16 </div>` 17 } 18 19 $('#new_comment').on('submit', function(e){ 20 e.preventDefault(); 21 var formData = new FormData(this); 22 var url = $(this).attr('action'); 23 $.ajax({ 24 url: url, 25 type: "POST", 26 data: formData, 27 dataType: 'json', 28 processData: false, 29 contentType: false 30 }) 31 .done(function(data){ 32 var html = buildHTML(data); 33 $('.comments').append(html); 34 $('.form__box__text-field').val(''); 35 $('.form__box__btn').prop('disabled', false); 36 }) 37 .fail(function(){ 38 alert('error'); 39 }) 40 }) 41});
create.json.jbuilder
json
1json.comment @comment.comment 2json.user.name @comment.user.name 3json.user @comment.user 4json.created_at @comment.created_at.strftime("%Y-%m-%d %H:%M")
comments_controller.rb
controller
1 def create 2 @comment = Comment.create(comment_params) 3 respond_to do |format| 4 format.html { redirect_to "/teams/#{@comment.team.id}/chat" } 5 format.json 6 end 7 end
chat.html.haml
haml
1.comments-box 2 .comments 3 - @comments.each do |comment| 4 .comments__comment 5 .comments__comment__text 6 = comment.comment 7 .comments__comment__info 8 .comments__comment__info__name 9 = link_to "#{comment.user.name}", user_path(comment.user) 10 .comments__comment__info__time 11 = comment.created_at.strftime("%Y-%m-%d %H:%M") 12 13 14 .comment__form 15 -if current_user 16 = form_for [@team, @comment] do |f| 17 .form__box 18 = f.label :comment, "コメント" , class: "form__box__label" 19 = f.text_field :comment, class: "form__box__text-field" 20 21 = f.submit "送信", class: "form__box__btn" 22 - else 23 %p 24 ログインしてくだい
回答1件
あなたの回答
tips
プレビュー