Rails / Ruby - map id:没有内部括号的值对输出?

时间:2012-08-23 20:49:07

标签: ruby-on-rails ruby ruby-on-rails-3

一个非常简单的问题 - 我目前有以下代码:

render :json => @items.map { |item| {item.id => item.value} }

以下列格式输出:

[{"12":"1.6 5d"},{"13":"1.7 16V 5d"},{"14":"1.6 L 5d"}]

如何在不使用内部括号的情况下重新格式化代码以使其输出? (像这样):

{"12":"1.6 5d","13":"1.7 16V 5d","14":"1.6 L 5d"}

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用reduce方法

@items.reduce({}) do |hash, kv| 
  hash[kv.first] = kv.last
  hash
end

答案 1 :(得分:2)

我看到的另一个常见技巧,如果我能做对的话:

Hash[*@items.map { |item| [item.id,item.value] }.flatten]

编辑据其他人说,这是红宝石1.8.6或更低,但更新的红宝石可以简单地说:

Hash[@items.map { |item| [item.id,item.value] }]