【问题标题】:Geokit-rails plugin - can't call to_json on returned GeoLoc object, gives circular reference errorGeokit-rails 插件 - 无法在返回的 GeoLoc 对象上调用 to_json,给出循环引用错误
【发布时间】:2009-05-15 08:02:31
【问题描述】:

我在 rails 2.3 应用程序上使用了早期版本的 geokit 插件,并且刚刚更新到这个最新版本 - 现在使用 gem 的那个。

在以前的版本中,可以将 .geocode 方法返回的对象转换为 json。只需调用它的 to_json 方法。

然而,这在新版本中中断了。

我注意到新 GeoLoc 中有一个属性 @all,如果您在其上调用 to_json,则会产生循环引用错误。

这里是一个返回对象的例子:

<Geokit::GeoLoc:0x3837be4 @full_address="Phoenix, AZ, USA", @city="Phoenix", @provider="google", @country_code="US", @accuracy=4, @street_address=nil, @lng=-112.073821, @precision="city", @zip=nil, @success=true, @all=[#<Geokit::GeoLoc:0x3837be4...>], @lat=33.448263, @state="AZ">

如果你在上面调用 to_json 就会出现错误:

ActiveSupport::JSON::CircularReferenceError(对象引用自身)

我正在使用“json”通过 jquery 在地图上绘制标记。当然,我可以从 GeoLoc 结果中创建自己的字符串并将其转换为 json - 但它是更多代码...

有人知道为什么在新版本中添加了该属性,以及是否有另一种方法可以将geoLoc结果直接转换为json?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    嘿,现在最简单的方法是致电my_geoloc.to_hash.to_json

    发生循环引用是因为地理编码调用可以返回多个结果,这些结果保存在@all 属性中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      相关资源
      最近更新 更多