Плагин Geokit-rails - не может вызвать to_json для возвращенного объекта GeoLoc, выдает ошибку циклической ссылки - PullRequest
2 голосов
/ 15 мая 2009

Я использовал более раннюю версию плагина geokit в приложении rails 2.3 и только что обновил до последней версии - той, которая теперь использует гем.

В предыдущей версии можно было преобразовать объект, возвращаемый методом .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?

1 Ответ

1 голос
/ 15 мая 2009

Привет! Самый простой способ - позвонить my_geoloc.to_hash.to_json

Циркулярный реф происходит потому, что вызовы геокодирования могут возвращать несколько результатов, которые хранятся в атрибуте @all.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...