Привет! Ребят, такой вопрос: использую яндекс апи для отображения маркера на карте, по адресу из формы.
Написал вот такой метод который получает json по запросу в яндекс, парсит его в хэш и достает координаты
def get_coordinates
addr = URI.encode(URI.decode(self.address))
http = "http://geocode-maps.yandex.ru/1.x/?format=json&geocode=#{addr}"
json = RestClient.get(http)
parced_json = ActiveSupport::JSON.decode(json)
parced_json["response"]["GeoObjectCollection"]["featureMember"][0]["GeoObject"]["Point"]["pos"]
end
что бы каждый раз при рендеринге страницы с картой, не делать запрос в яндекс я добавил поле coordinates в таблицу и записываю в это поле координаты при создании объекта
метод коллбэка в модели
before_save :set_coordinates
def set_coordinates
if address_changed?
self.coordinates = get_coordinates
end
end
но проблема в том, что пользователь может ввести не корректный для яндекса запрос, и его нужно как то обрабатывать
я изменил метод таким образом
def get_coordinates
begin
addr = URI.encode(URI.decode(self.address))
http = "http://geocode-maps.yandex.ru/1.x/?format=json&geocode=#{addr}"
json = RestClient.get(http)
parced_json = ActiveSupport::JSON.decode(json)
parced_json["response"]["GeoObjectCollection"]["featureMember"][0]["GeoObject"]["Point"]["pos"]
rescue NoMethodError
self.errors.add(:coordinates)
end
end
но ошибка записывается не в
@messages={:coordinates=>["is invalid"]}>
а в поле
coordinates
как сделать так, что бы ошибка отправлялась в нужное место?