0

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

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"}

谢谢!

4

2 回答 2

2

你可以使用reduce方法

@items.reduce({}) do |hash, kv| 
  hash[kv.first] = kv.last
  hash
end
于 2012-08-23T20:58:01.447 回答
2

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

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

编辑根据其他人的说法,这是 ruby​​ 1.8.6 或更低版本,但较新的 rubies 可以简单地:

Hash[@items.map { |item| [item.id,item.value] }]
于 2012-08-24T03:03:45.873 回答