【发布时间】:2013-08-16 01:26:47
【问题描述】:
我必须按照 rabl 代码生成一些 JSON 数据。
object @event
attributes :id, :EID, :name, :address, :description, :latitude, :longitude, :time, :created_at
node(:rsvp_count) { |event| event.rsvp_users.count }
node(:check_in_count) { |event| event.checkedin_users.count }
node(:FID) { |event| event.creater.FID if event.creater}
child :rsvp_users, :object_root => false do
extends 'users/index'
end
child :checkedin_users, :object_root => false do
extends 'users/index'
end
它生成的数据是这样的:
[
{
"event": {
"id": 2,
"EID": 123458,
"name": "event no.2",
"address": "189 elm st",
"description": "awesome event",
"latitude": 10,
"longitude": 10,
"time": "2013-10-20T18:00:00Z",
"created_at": "2013-08-15T21:06:21Z",
"rsvp_count": 3,
"check_in_count": 0,
"FID": 12345678,
"users": [
{
"id": 4,
"FID": 112233445,
"name": "name1",
"using_app": true
},
{
"id": 3,
"FID": 9999,
"name": "name2",
"using_app": false
},
{
"id": 2,
"FID": 123456789,
"name": "name3-robot",
"using_app": true
}
],
"checkedin_users": []
}
}
]
您可以忽略 event 哈希,奇怪的事情发生在 2 users 数组的底部。
如您所见,即使我将root 参数设置为"rsvp_users",子rsvp_users 数组也会以名称users 显示。但是,对于checkedin_users 数组(现在是空的),我不需要做任何事情,它的名称自动为checkedin_users。这里发生了什么?它是rabl中的错误吗?还是我错过了什么?
【问题讨论】:
-
你试过“child :rsvp_users => :rsvp_users, :object_root => false”吗?
-
是的,我有,这实际上给了我一个错误。但是,如果我在没有
:object_root => false的情况下单独使用:rsvp_users => :rsvp_users,那就没问题了。但我不希望数组中的每个对象都有名字。 -
试试这个“child {:rsvp_users => :rsvp_users}, {:object_root => false}”,它适用于我的机器。
标签: ruby-on-rails json rabl