如何在rabl中输出两个数据作为json

时间:2012-06-26 17:00:56

标签: ruby-on-rails json rabl

Rabl的新手并不确定如何使用单个哈希返回的两个不同的数组来执行此操作:

@data={:locations => [location1, location2], :items => [item1,item2]}

在我的rabl文件中,我想做类似以下的事情:

@data[:locations]
extends "api/location_show"
@data[:items]
extends "api/item_show"

输出:

{
    "locations": [
        {
            "id": 156,
            "name": "Location 1"
        },
        {
            "id": 158,
            "name": "Location 2"
        }
    ],
    "items": [
        {
            "global_id": 3189,
            "header": "pistachio 1"
        },
        {
            "global_id": 3189,
            "header": "pistachio 2"
        }
    ]
}

但它似乎没有起作用。有没有办法让这个工作?

THX

1 个答案:

答案 0 :(得分:1)

您的rabl文件应该类似于:

object false
child (:locations) { attributes :id, :name }
child (:items) { attributes :global_id, :header }

通过将object设置为false,您实际上告诉rabl您想要自己构建节点。然后,您可以继续并根据需要调用子节点和节点方法。