另一个真正的 Ruby 新手,所以请温柔点……我正在使用 alexreisner 在 rails 3.0 上的 Geocoder,我无法从 Geocoder::Results lib 调用方法。我仔细研究了 Geocoder 文档,但我无法完成一件简单的事情:从用户提交的地址中提取“状态”结果。所以把“123 Fake Street, San Francisco, CA”变成“CA”或“California”。
(我的程序现在只使用“状态”信息来帮助确定结果,但我希望在以后改进应用程序时使用完整的地址信息,这就是我要求提供完整地址的原因。 )
我已经通过从文档和我在这里找到的其他答案中收集到的最好的模型设置了我的模型,但是以前与此主题类似的答案对我没有帮助:
class Project < ActiveRecord::Base
attr_accessible :title, :address, :latitude, :longitude
belongs_to :user
geocoded_by :address
after_validation :fetch_coordinates
reverse_geocoded_by :latitude, :longitude do |obj, geo|
obj.state = geo.state
obj.country_code = geo.country_code
obj.address = [geo.state, geo.country_code].join(",")
end
after_validation :reverse_geocode
end
但这会为州、国家/地区代码和地址带来“未定义的错误方法”。我不明白,因为 Geocoder gem 的文档清楚地提供了这些方法。我的模型似乎根本无法访问它们。(作为记录,我的模型能够从输入的地址中提取纬度和经度,因此看起来 Geocoder 配置正确。并且“geocoded_by”方法效果很好。此外,它已正确设置为 Google API)。
我很确定我在这里遗漏了一些简单的东西。在 Rails 控制台中,我什至可以使用 Geocoder.search("Miami, FL") 并提取所有县、州和城市信息,但我似乎无法通过我的模型提取“州”。
谢谢你的帮助!