Rails Geocoder"未定义的方法错误"

Mat*_*one 1 ruby rubygems ruby-on-rails google-geocoder ruby-on-rails-3

这是Ruby上的另一个真正的新手,所以请温柔......我正在使用alexreisner的Geocoder on rails 3.0,我无法调用Geocoder :: Results lib中的方法.我仔细研究了Geocoder文档,但我无法完成一件简单的事情:从用户提交的地址中取出"状态"结果.因此,将"加利福尼亚州旧金山的123 Fake Street"变成"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
Run Code Online (Sandbox Code Playgroud)

但是这会出现状态,国家代码和地址的"未定义错误方法".我不明白,因为Geocoder gem的文档清楚地提供了这些方法.我的模型似乎根本无法访问它们.(为了记录,我的模型能够从输入的地址中提取纬度和经度,所以看起来Geocoder配置正确.而且"geocoded_by"方法效果很好.此外,它已正确设置为Google API).

我很确定我在这里缺少一些直截了当的东西.在rails控制台中,我甚至可以使用Geocoder.search("Miami,FL")并提取所有县,州和城市信息,但我似乎无法通过我的模型提取"状态".

谢谢你的帮助!

bot*_*bot 6

确保重新启动rails服务器.我遇到了一个情况,地理编码在rails控制台中工作得很好,但undefined method 'geocoded_by'在我的应用程序中给了我一个.看起来好像这不是你得到同样错误的原因,但它是我的.