我使用Geocode Ruby Gem将zip / country的用户输入转换为格式合理的位置(例如美国加利福尼亚州洛杉矶)。我也想在将来使用地理编码(以防万一你想知道我为什么要这么多格式化
我将列“地址”迁移到用户数据库中。现在我陷入了地理编码的困境,不知道是不是因为我没有在数据库中创建位置文件夹,而是使用用户数据库迁移列。
我收到路由错误:未定义的方法`geocoded_by'代表#
我是新手,所以如果我没有任何意义,我很抱歉。
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.
答案 0 :(得分:1)
很难在评论中提出建议,所以我会在答案中这样做,所以请原谅,如果它太长了。请不要投票,我会删除它或在最后编辑它。取决于它是否是真实答案。
您收到路由错误,因为您不了解要更改的内容以及代码中的内容。
第一
class Location < ActiveRecord::Base
attr_accessible :address, :latitude, :longitude
# comment this out! => Geocoder.search("New York, NY, USA")
end
在你的控制器方法中,只是尝试执行
def full_address
@user = User.find(params[:address])
render :text => Geocoder.search("New York, NY, USA").inspect.to_s
end
您将收到错误(如果您的应用中未加载gem)或某些结果。
在我们尝试其他任何事情之前,请先解决这个问题。
再次运行aaplication并为 full_address 控制器操作执行该路由
顺便说一下,你可以在rails console中试试所有内容
/ path / to / project#rails c
IRB&GT; Geocoder.search(“纽约,纽约,美国”)
尝试在Loacation模型中包含地理编码器
class Location < ActiveRecord::Base
extend ::Geocoder::Model::ActiveRecord
geocoded_by :address_for_geocode
reverse_geocoded_by :latitude, :longitude
end
我刚刚在他们的git存储库中检查了源代码,他们没有扩展ActivRecord :: Base所以你必须手动完成!!!
答案 1 :(得分:0)
请检查您的控制器
def full_address
@user = User.find(params[:address])
Geocode.serach("@user")
end
应该是
def full_address
@user = User.find(params[:address])
Geocode.search("@user")
end