Geocoder - 对控制器中的数据进行地理编码

时间:2015-05-27 19:40:09

标签: ruby-on-rails google-maps rails-geocoder

我正在使用Geocoder gem,我希望对位置(城市,州)进行地理编码,并在控制器中获取lat lng。

我正在这样做,并收到以下错误。

<%= @geo = Geocoder.coordinates("Los Angeles").inspect %>
<%= puts @geo.join(",") %>

错误:     未定义的方法`join'for“[46.7225341,8.9635602]”:String

我希望将lat和lng作为逗号分隔的字符串保存在数据库中。

2 个答案:

答案 0 :(得分:2)

我不认为你想在这里使用检查。它可能会将它转换为一个没有连接方法的String。此外,通常使用before_save回调在模型上完成地理编码,而不是在控制器中。

答案 1 :(得分:0)

您可以使用after_validation轻松对模型中的地址进行地理编码。

就像这样。

      # app/models/venue.rb
        geocoded_by :address
        after_validation :geocode

通过这种方式,您可以将纬度和经度属性保存到相应的模型中。