在rabl中错误的子根名称并且不能设置子根名称

时间:2013-08-16 01:26:48

标签: ruby-on-rails json rabl

我必须遵循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数组底部发生了奇怪的事情。

正如您所看到的,即使我将rsvp_users参数设置为users,子root数组也会显示名称"rsvp_users"。但是,对于checkedin_users数组(现在为空),我不需要做任何事情,而且它的名称会自动checkedin_users。这里发生了什么?这是rabl的一个错误吗?或者这是我遗失的东西?

1 个答案:

答案 0 :(得分:7)

我遇到了同样的错误,问题似乎是将object_root设置为false。 在Bigxiang的评论之后,我进行了一些实验,发现这很有效:

child( {:rsvp => :rsvp}, {:object_root => false} ) do
   extends "users/index"
end

请注意圆括号“()”和大括号“{}”。