【发布时间】:2012-05-01 01:36:24
【问题描述】:
我使用 Geocode Ruby Gem 将用户输入的 zip/国家/地区转换为格式良好的位置(例如,美国加利福尼亚州洛杉矶)。我还想在未来使用地理编码(以防你想知道为什么我要费这么多麻烦来修饰格式
我将“地址”列迁移到用户数据库中。现在我被地理编码卡住了,不知道是不是因为我没有在数据库中创建位置文件夹,而是使用用户数据库迁移列。
我收到一个路由错误:未定义方法 `geocoded_by' for #
我是新手,所以如果我没有任何意义,我很抱歉。
class Location < ActiveRecord::Base
attr_accessible :address, :latitude, :longitude
geocoded_by :full_address
after_validation :geocode, :if => :address_changed?
end
这是我的控制器:
def full_address
@user = User.find(params[:address])
Geocode.serach("@user")
end
将我的 location.rb 更改为以下内容:
class Location < ActiveRecord::Base
extend ::Geocoder::Model::ActiveRecord
attr_accessible :address, :latitude, :longitude
geocoded_by :address_for_geocode
reverse_geocoded_by :latitude, :longitude
end
导致以下错误:
Routing Error
uninitialized constant Location::Geocoder
Try running rake routes for more information on available routes.
【问题讨论】:
-
我会说你的 gem 没有加载,你可以启动 Geocoder.search("1 Twins Way, Minneapolis") 例如。尝试注释掉 geocode_by 和下面的行,看看还有什么错误。
-
我同意,听起来 gem 没有加载。将
bundle install添加到 Gemfile 后,您运行了吗? -
我肯定安装了 gem。但是,你们俩说的都是绝对有道理的。我会进行更新和安装以确保我会遵循@milan 的建议并注释掉 geocode_by 代码作为测试。
-
我已经确认安装了 Geocoder '1.1.1'。根据@MilanJaric 的建议,我在原始帖子中添加了一些额外的 cmets。
-
您的控制器中有错字:Geocode.serach("@user")