前提・実現したいこと
Railsコントローラ内において、render json: 配列
で、配列の中をネストさせたいのですが、
どのようにコードを書いたらいいのか分からないのでアドバイスを頂けますと幸いです。
下記のようなjsonを返したいです。
お手数ですが、よろしくお願いいたします。
questionnaires: [ { id: 1, text: "どれがいい?", gender: "男", age: 23, choices: [ {id: 1, choice: "花", }, {id: 2, choice: "酒", }, {id: 3, choice: "チケット", } ] }, { id: 2, text: "迷う!", gender: "女", age: 28, choices: [ {id: 1, choice: "皿", }, {id: 2, choice: "コップ", }, {id: 3, choice: "タオル", } ] }, { id: 3, text: "おすすめは?", gender: "男", age: 25, choices: [ {id: 1, choice: "カタログ", }, {id: 2, choice: "商品券", }, {id: 3, choice: "ワイン", } ] }, ]
テーブル構成
Questionnaireテーブル
|id|text|gender|age|
|:--|:--:|--:|
|1|どれがいい?|男|23|
|2|迷う!|女|28|
|3|おすすめは?|男|25|
Choiceテーブル
id | choice | questionnaire_id |
---|---|---|
1 | 花 | 1 |
2 | 酒 | 1 |
3 | チケット | 1 |
4 | 皿 | 2 |
5 | コップ | 2 |
6 | タオル | 2 |
7 | カタログ | 3 |
8 | 商品券 | 3 |
9 | ワイン | 3 |
試したこと
api/questionnaires_controller.rb
ruby
1 def index 2 @questionnaires = Questionnaire.joins(:choices).select("questionnaires.*, choices.*") 3 4 render json: @questionnaires 5 end
上記のようにすると、当たり前ですが単純に9つのデータができてしまいました。
補足情報(FW/ツールのバージョンなど)
Ruby 2.7.2
Rails 6.0.3.4
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/19 11:10
2021/02/19 11:11
2021/02/19 11:13
2021/02/20 02:35