我将一些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'},"]];
我假设红宝石版本的区别是问题,但我也怀疑我的方法是最佳的。我怎样才能重写它以使它适用于这两个版本?
答案 0 :(得分: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 =>相同值}。