[英]Node as Hash not Array in RABL
我有此RABL模板:
object :@pollution => nil
attributes :id, :time
node :components do |p|
p.components.map do |component|
{ component.name => { level: component.level, main: component.main } }
end
end
它呈現
{ "id":820,
"time":"2017-05-12 20:00:00 UTC",
"components": [ # I don't need this array
{ "component1": { "level": 3, "main": false } },
{ "component2": { "level": 5, "main": false } },
]
}
我想要這個
{ "id":820,
"time":"2017-05-12 20:00:00 UTC",
"components": {
"component1": { "level": 3, "main" :false },
"component2": { "level": 5, "main" :false },
}
}
因此,除了組成數組之外,我還需要一個哈希,其中的鍵將是組成名稱和值-具有組成數據( level(Int)
和main(Bool)
)的哈希。
我試圖渲染child :components
,但是它也渲染一個數組。
謝謝你的幫助!
要獲得所需的內容,您需要更改以下幾行:
p.components.map do |component|
{ component.name => { level: component.level, main: component.main } }
end
返回數組,類似於:
p.components.inject({}) do |components, component|
components[component.name] = { level: component.level, main: component.main }
components
end
這將建立一個哈希而不是一個數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.