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

这将适用于 Ruby 1.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 回答