0

我正在玩Geocoder gem,我将此代码添加到用户模型

  include GeoKit::Geocoders

  geocoded_by :full_street_address   # can also be an IP address
  after_validation :geocode          # auto-fetch coordinates

在另一个控制器中,在CarController#index我调用:

zip_code = '94301'
aaa = Geocoder.search(zip_code).first.coordinates
puts '==='
puts aaa.inspect
puts '==='

但不是

s[0].latitude   # =>    37.4457966
s[0].longitude  # =>    -122.1575745
s[0].address    # =>    "Palo Alto, CA 94301, USA"

我有

undefined method `search' for Geokit::Geocoders::Geocoder:Class

地理编码器的设置有什么问题?

4

1 回答 1

1

我认为这只是一个名称空间问题。您需要删除include GeoKit::Geocoders. 我查看了地理编码器源,但找不到任何 GeoKit

$ pwd
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/geocoder-1.1.8/lib
$ find . | xargs grep -i GeoKit
$

所以我用谷歌搜索,显然还有另一种叫做geokit的宝石。您提到的命名空间在第 92 行的这个 gem 中得到解决。而这个 GeoCoder 类显然没有搜索方法。所以我怀疑你的 Gemfile 中提到了 geokit。

顺便说一句,我只使用地理编码器,它在我的环境中运行良好 -

$ rails console
Loading development environment (Rails 4.0.0)
2.0.0-p247 :001 > zip_code = '94301'
 => "94301"
2.0.0-p247 :002 > aaa = Geocoder.search(zip_code).first.coordinates
 => [37.4457966, -122.1575745]
2.0.0-p247 :003 >
于 2013-09-11T10:59:36.797 回答