一个非常简单的问题 - 我目前有以下代码:
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"}
谢谢!
答案 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] }]