在我的控制器中:

@arr = []
@jsonPosts = Post.each do |p|
  arrLatLng = {}
  arrLatLng["latitude"] = p.lat
  arrLatLng["longitude"] = p.lon
  @arr << arrLatLng
end
@postsLatLng = @arr.to_json


当我使用console.log(<%= @postsLatLng %>)时,在视图中我得到了意外的令牌和错误,它显示:

console.log([{&quot;latitude&quot;:34.0462002,&quot;longitude&quot;:-118.2044673},{&quot;latitude&quot;:34.0462074,&quot;longitude&quot;:-118...


当我将arrLatLng更改为数组时,它可以工作:

arrLatLng = []
arrLatLng << p.lat
arrLatLng << p.lon


我很好奇:


解决办法是什么?
当我将arrLatLng更改为数组时,为什么这样做有效?

最佳答案

尝试http://api.rubyonrails.org/classes/ActionView/Helpers/JavaScriptHelper.html#method-i-j

console.log(<%= j @postsLatLng %>)

另外,完全不相关,但是您可以这样做:

@postsLatLng = Post.inject([]) { |memo, p|
  memo << {latitude: p.lat, longitude: p.lon}
}.to_json

关于javascript - JavaScript不喜欢hashes.to_json吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20450096/

10-08 21:18