0
我傳遞一些JSON跨越到一個視圖,像這樣:將ruby對象映射到json的正確(版本安全)方法是什麼?
@items = Item.where(:custom => false).map do |item|
"{'id': #{item.id}, 'label': '#{item.name}', 'category': '#{item.category}'},"
end
@items = "[#{@items}]"
這在當地正常工作,與紅寶石1.8.7:
[{'id': 1, 'label': 'Ball', 'category', : 'Toy'},{'id': 2, 'label': 'Rat', 'category', : 'Live Rodent'}]
然而,在部署到Heroku的(紅寶石1.9。 2我相信),可怕的事情發生了:
[["{'id': 1, 'label': 'Ball', 'category', : 'Toy'},", "{'id': 2, 'label': 'Rat', 'category', : 'Live Rodent'},"]];
我假設在紅寶石版本不同的是這個問題,但我也懷疑我的方法是最佳的。我該如何重寫這個版本才能在兩個版本上都能正常工作?
從技術上講,你的JSON是無效的。鍵和字符串值必須根據規範雙引號。可能不是所有這些的根本原因,但值得注意的是。通常,您不應手動編寫JSON。請參閱下面的答案以獲得更好的解決方案 – Flambino