Ajax通信関連での質問です。
ユーザーが投稿したものに対してコメントをつけられるような機能を非同期通信で実装していまして、
一点分からない点があります。
下のコードにてコメントが送信されたときにそのフォームの情報をコントローラーに送信しています。
javascript
1 $('#new_comment').on('submit', function(e){ 2 e.preventDefault(); 3 var formData = new FormData(this); 4 var url = $(this).attr('action'); 5 $.ajax({ 6 url: url, 7 type: "POST", 8 data: formData, 9 dataType: "json", 10 processData: false, 11 contentType: false 12 }) 13 .done(function(data){ 14 console.log(data);
そしてコントローラー側ではコメントを保存した後、コメント情報をjson形式でJavaScript側に返す処理を書いています。
commentscontroller
1 def create 2 @comment = Comment.new(comment_params) 3 @comment.user_id = current_user.id 4 @comment.set_list_id = params[:set_list_id] 5 respond_to do |format| 6 if @comment.save 7 format.html { redirect_to :back } 8 format.json { render json: @comment} 9 end 10 end 11 end
そして、返ってきている情報をconsole.logで確認すると、
{id: 38, content: "いきてー", user_id: 1, set_list_id: 1, created_at: "2020-05-24T22:11:02.000Z", …}
というデータでした。
Json形式のデータであればキーがダブルクオーテーションで囲うはずだと思うのですが、ハッシュとして返ってきているのはなぜなのでしょうか??
また、この返ってきているdataの中身を確認すると、
console
1console.log(data.content) #いきてー 2console.log(data.user.name) #error 3
となり、data.user.nameは値を取得できませんでした。
このようになった理由が知りたいです。
何卒、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/25 10:35