#やりたいこと
お世話になります。
複数のインスタンス変数をjbuilderで下記のように成型したいと考えています。
2種類のオブジェクトをネストした形です。
{tasks: [{"id": 1, "name": "hoge", "is_done": true}, {"id": 2, "name": "huga", "is_done": false}, {"id": 3, "name": "hogehuga", "is_done": true}], done_tasks: [{"id": 1, "name": "hoge", "is_done": true}, {"id": 3, "name": "hogehuga", "is_done": true}]}
#モデル
#####Taskモデル
id: int
name: string
is_done: boolearn
#ソース
####コントローラー
def index @tasks = Task.order('updated_at DESC') @done_tasks = Task.where(is_done: true) end
このパターンでもやってみた(@done_tasksのクラスがArray)
@tasks = Task.order('updated_at DESC') @done_tasks = @tasks.select{ |task| task.is_done }
####jbuilderで試したことなど
json.tasks
1 json.array! @tasks, :id, :name, :is_done, :created_at, :updated_at 2end 3json.done_tasks do 4 json.array! @done_tasks, :id, :name, :is_done, :created_at, :updated_at 5end
json.set! tasks do json.array! @tasks, :id, :name, :is_done, :created_at, :updated_at end json.set! done_tasks do json.array! @done_tasks, :id, :name, :is_done, :created_at, :updated_at end
json.set! :tasks do json.array! @tasks do |task| json.extract! task, :id, :name, :is_done, :created_at, :updated_at end end json.set! :done_tasks done_tasks json.array! @done_tasks do |done_task| json.extract! done_task, :id, :name, :is_done, :created_at, :updated_at end end
などなど・・・
#現状
該当するcurlコマンドを叩いてみると、下記のようになったり、HTMLが帰ってきたりします。
{"tasks": [{"id": 1, "name": "hoge", "is_done": true}, {"id": 2, "name": "huga", "is_done": false}, {"id": 3, "name": "hogehuga", "is_done": true}], "done_tasks": []}
↑done_tasksが空の配列になってしまう
#教えていただきたいこと
・@tasks
と@done_tasks
が両方ともActiveRecordの時の方法
・@done_tasks
のみArrayの時の方法
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー