RABL当前代码:
object @region
attributes :id, :name, :latitude, :longitude, :region_id
child :sub_regions do
attributes :name
end
我得到以下输出:
{
"id": 1,
"name": "test",
"latitude": "30.932351",
"longitude": "92.83391",
"region_id": 1,
"sub_regions": [{
"name": "1"
}, {
"name": "2"
}, {
"name": "3"
}, {
"name": "4"
}, {
"name": "5"
}, {
"name": "6"
}, {
"name": "7"
}
]
}
我想删除name属性,只是将值显示为数组 但我想要的是将集合转换为数组,如输出:
{
id: 1,
name: "test",
latitude: "30.932351",
longitude: "92.83391",
region_id: 1,
sub_regions: [
"1",
"2",
"3",
"4",
"5",
"6",
"7"
]
}
我能得到的最接近的是这个RABL代码:
code :sub_regions do |s|
s["name"]
end
{
{
id: 1,
name: "test",
"latitude": "30.932351",
"longitude": "92.83391",
region_id: 1,
sub_regions: "1"
}
}
通过show.json.rabl中的上述代码块,它只显示第一个元素,如何使其成为包含所有元素的数组?
答案 0 :(得分:2)
joe nayyar在他的回答中有正确的想法,但是比使用object false
更简洁。
child :sub_regions do
attributes :name
end
...变为
node :sub_regions do |region|
region.sub_regions.collect(&:name)
end
答案 1 :(得分:0)
这是因为当你应该使用集合@region
时,你使用了对象@region答案 2 :(得分:0)
对于像我这样懒散漫游的人,因为RABL位于ruby代码库之上,你可以做类似的事情:
object false
node :region, :object_root => false do
{:id => @region.id, :name => @region.name, :latitude=> @region.latitude, :region_id => @region.region_id, :sub_regions=>@region.sub_regions.collect(&:name)}
end