1

我想使用 JBuilder 构建一个 JSON 结构:

{
"name": "John Doe", 
"reservations": [
    {
        "restaurant": "ABC",
        "reservation_time": "2012/12/01 20:00",
        "name": "John Doe"
    }, 
    {
        "restaurant": "CDE",
        "reservation_time": "2012/12/04 20:00",
        "name": "John Doe"
    }
]
}

{
"name": "Jane Doe", 
"reservations": [
    {
        "restaurant": "Little Bites",
        "reservation_time": "2012/12/01 20:00",
        "name": "Jane Doe"
    }, 
    {
        "restaurant": "Thai Taste",
        "reservation_time": "2012/12/04 20:00",
        "name": "Jane Doe"
    }
]
}

我在这里尝试了ESoft 的解决方案,但我无法让它工作。在他的解决方案中,似乎“名称”属性是硬编码的?

我需要做什么才能让 JBuilder 从我的数据中生成 name 属性的值(我的数据作为数组从 Rails 控制器传递到我的 .json.jbuilder 文件)?(即如果 John Doe 在我的数据库中有 5 个预订,而 Jack Daniels 有 3 个预订,那么我希望我的姓名属性是“John Doe”和“Jack Daniels”)。

4

1 回答 1

3

您可以使用blockwithjson.some_var_name方法来获取命名数组(或任何其他结果)。

假设您有一个user带有属性name(字符串)和reservations(引用模型数组)的属性。您的示例的完整 jbuilder 模板可以是:

json.array!(@users) do |user|
    json.name user.name

    json.reservations do
        json.array!(user.reservations) do |reservation|
            json.restaurant reservation.restaurant.name
            json.reservation_time reservation.time
            json.name user.name
        end
    end
end
于 2014-05-01T18:30:17.270 回答