0

私はいくつかのjsonを次のようにビューに渡しています:

@items = Item.where(:custom => false).map do |item|
    "{'id': #{item.id}, 'label': '#{item.name}', 'category': '#{item.category}'},"
end
@items = "[#{@items}]"

これは、Ruby 1.8.7 を使用してローカルで正常に動作します。

[{'id': 1, 'label': 'Ball', 'category', : 'Toy'},{'id': 2, 'label': 'Rat', 'category', : 'Live Rodent'}]

ただし、heroku (ruby 1.9.2 だと思います) にデプロイすると、恐ろしいことが起こります。

[["{'id': 1, 'label': 'Ball', 'category', : 'Toy'},", "{'id': 2, 'label': 'Rat', 'category', : 'Live Rodent'},"]];

Ruby のバージョンの違いが問題だと思いますが、私の方法が最適かどうかも疑問です。これを両方のバージョンで動作するように書き直すにはどうすればよいですか?

4

1 に答える 1

2

これはRuby1.8.7および1.9.2で機能します。

@items = Item.where(:custom => false).map do |item|
   {'id' => item.id, 'label' => item.name, 'category' => item.category}
end
@items = @items.to_json

問題はおそらく、Ruby 1.9.2がハッシュを定義する方法を追加したことが原因であるため、{key:value}は{:key=>value}と同じです。

于 2012-10-18T13:17:26.307 に答える