我想使用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的解决方案here,但我无法让它发挥作用。在他的解决方案中,似乎“name”属性是硬编码的?
我需要做什么才能让JBuilder从我的数据中生成name属性的值(我的数据从我的Rails控制器传递到我的.json.jbuilder文件作为数组)? (即如果John Doe在我的数据库中有五个预订,而Jack Daniels有3个预订,那么我希望我的名字属性为“John Doe”和“Jack Daniels”。
答案 0 :(得分:3)
您可以使用block
json.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