2017-07-02 37 views
1

我有这样一段代码在我update.json.jbuilder的Rails 5.1:Jbuilder的格式单一的JSON对象数组

json.data do 
    json.(@user_group, :id, :name, :description) 
    json.users @user_group.users, :id, :name 
    json.roles @user_group.roles, :id, :name 
end 

这给了我这个JSON:

{ 
    "data":{ 
     "id":95, 
     "name":"Management group", 
     "description":"This is management group", 
     "users":[ 
     { 
      "id":10, 
      "name":"Test User" 
     } 
     ], 
     "roles":[ 
     { 
      "id":1, 
      "name":"FULL ACCESS (TEMPORARY)" 
     } 
     ] 
    } 
} 

如何包装“数据“为了这样的事情,好吗?

{ 
    "data": [ 
    { 
     "id":95, 
     "name":"Management group", 
     "description":"This is management group", 
     "users":[ 
     { 
      "id":10, 
      "name":"Test User" 
     } 
     ], 
     "roles":[ 
     { 
      "id":1, 
      "name":"FULL ACCESS (TEMPORARY)" 
     } 
     ] 
    } 
] 
} 

通知[]后第一个和最后{} 到目前为止,我一直在努力执行json.array!,但没有运气,因为它抛出我ActionView::Template::Error (undefined method map这意味着我试图整理一些东西,大概会不适合as mentioned here

回答

1

随着child! method它似乎是这样的简单:

json.data do 
    json.child! do 
    json.(@user_group, :id, :name, :description) 
    json.users @user_group.users, :id, :name 
    json.roles @user_group.roles, :id, :name 
    end 
end