ruby-on-rails - Rails 地理编码器 "undefined method error"

标签 ruby-on-rails ruby ruby-on-rails-3 rubygems google-geocoder

这里是 Ruby 的另一个真正的新手,所以请保持温柔...... 我在 rails 3.0 上使用 alexreisner 的 Geocoder,但无法从 Geocoder::Results 库调用方法。我仔细研究了 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") 并提取所有县、州和城市信息,但我似乎无法通过我的模型提取“州”。

感谢您的帮助!

最佳答案

请确保您重新启动 Rails 服务器。我遇到了这样一种情况:地理编码在 Rails 控制台中运行良好,但在我的应用程序中给了我一个 undefined method 'geocoded_by'。看来这不是您出现相同错误的原因,而是我的原因。

关于ruby-on-rails - Rails 地理编码器 "undefined method error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7865281/

相关文章:

ruby-on-rails - gem install rmagick -v 2.13.1 错误 Failed to build gem native extension on Mac OS 10.9.1

ruby-on-rails - 管理 Rails 的 gem 版本/依赖项

ruby - 在非 Rails/Rack 项目中使用 Sprockets — rake 编译命令出现错误

ruby - 从 'cat' 输出着色 ruby​​ 语法

ruby-on-rails - paypal_adaptive gem 的安全问题

ruby-on-rails - 将 JSON 数据作为 post 方法从 Rails Controller 发送到 Web 服务

mysql - 在 ruby​​ 中运行 rake import 任务时内存不足

javascript - Rails 应用程序中最简单的可见计时器

ruby - class_eval、class_exec、module_eval 和 module_exec 之间有什么区别?

database - 关系发现误会