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

私が見るもう一つの一般的なトリック、私がそれを正しくすることができれば:

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

編集他の人によると、それはルビー1.8.6以下ですが、新しいルビーは単純に次のことができます。

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

You can use the reduce method

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