如何使用Jbuilder创建一个包含元素的数组,而不首先将其设置为变量?
我希望在使用JBuilder时能够得到以下结果
{
"something": [
{ "name": "first", "foo": "bar"},
{ "name": "second", "foo": "baz"}
]
}
我发现的唯一方法是:
json.something do
something = [
{ name: 'first', foo: 'bar' },
{ name: 'second', foo: 'baz' }
]
json.array! something do |item|
json.(item, :name, :foo)
end
end
有没有办法让它看起来更像这样?
json.array! 'something' do
json.array do
json.name 'first'
json.foo 'bar'
end
json.array do
json.name 'second'
json.foo 'baz'
end
end
答案 0 :(得分:10)
事实证明,jbuilder内置了对这种用法的支持。您可以通过以下方式使用child!
方法:
json.something do
json.child! {
json.name "first"
json.foo "bar"
}
json.child! {
json.name "second"
json.foo "barz"
}
end
#=>
{
"something": [
{ "name": "first", "foo": "bar"},
{ "name": "second", "foo": "baz"}
]
}
我觉得它好多了。
答案 1 :(得分:4)
我能想象的唯一类似的东西是使用硬编码哈希:
json.something do
json.array! [
{name:'first',foo:'bar'},
{name:'second',foo:'baz'}
]
end