簡體   English   中英

RABL中的節點為哈希而不是數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM