質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

738閲覧

render jsonについて質問です Rails

monkeys-111

総合スコア1

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/01/13 01:33

編集2021/01/13 02:31

前提
ポートフォリオ作成中でコメント投稿機能を非同期で実装できたのですがコメントの数字も非同期で実装したいと考えております

user

1 has_many :articles, dependent: :destroy 2 has_many :likes, dependent: :destroy 3

article

1 belongs_to :user 2 3 has_many :likes, dependent: :destroy 4 has_many :comments, dependent: :destroy

comment

1 belongs_to :user 2 belongs_to :article

like

1 belongs_to :user 2 belongs_to :recommend

聞きたいことの一行まとめ
render json: でオブジェクトと一緒に値を渡すことができるのか?
起きている問題
RailsのActiveModelSerializersを使用して保存したコメントのデータをjs側に渡しています

commentsconrtoller

1 2def create 3 @article = Article.find(params[:article_id]) 4 @comment = @article.comments.build(comment_params.merge(user_id: current_user.id)) 5 @comment.save! 6 comment_count = @article.likes.count 7 8 9 render json: @comment     10 end 11

render json: @commentのところで一緒にcomment_countのデータも渡したいが方法がわからないです

問題解決するために試したこと

render json: {comment: @comment, commentCount: comment_count}

とやってみたのですがcomment_countのデータは渡せるのですが@commentのデータがうまく渡らないです

serializerでの設定
Serializerでcommentの内容、commentに紐づくuserの名前、userの画像のURLを指定しています

class CommentSerializer < ActiveModel::Serializer include Rails.application.routes.url_helpers attributes :id, :content, :username, :avatar_url def username object.user.username end def avatar_url if object.user.avatar.attached? url_for(object.user.avatar) else '/assets/default_avatar.png' end end end

理想

data: comment: content: "こんにちは↵" username: "ユーザー2" user_avatar_url: "http//localhost:300/user_avatar.png" commentCount: 1

現実

data: comment: content: "こんにちは↵" created_at: "2021-01-13T10:57:45.367+09:00" id: 1 article_id: 2 updated_at: "2021-01-13T10:57:45.367+09:00" user_id: 2 commentCount: 1

おそらくSerializersが@commentをcommentSerializerと認識しておらずデータが渡っていないのだと考えています
どなたかご教授いただけると幸いです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

monkeys-111

2021/01/13 01:59

説明不足ですいません @commentにはcommentの内容、commentに紐づくuserの名前、userの画像のurlをserializerで指定して渡しているのですが実際のデータにはcommentのid, userのid,articleのid,commentの内容が渡ってきています
m.ts10806

2021/01/13 02:00

質問は編集できますので、適宜追記してください。 あとできれば具体的な出力内容を提示されたほうがいいかもしれません。
monkeys-111

2021/01/13 02:06

アドバイスありがとうございます すぐに変更します
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問