我有一个rails应用程序。 Rails version is 2.3.4
和ruby version 1.8.7
。在该应用程序中,我使用了geokit (1.5.0) gem
和geokit-rail
插件来查找最近的位置。
在我的模型中,我有这样的代码,
class Notary < ActiveRecord::Base
acts_as_mappable
end
在我的控制器中有这样的代码,
class Client::OrdersController < ApplicationController
def find_notary
@order = Order.find(params[:id])
@miles = 10
unless params[:notary_search]
@notaries = Notary.find(:all, :origin => @order.signing_location_zip_code, :within => @miles, :conditions => "on_vacation IS NOT true",:order=>"distance asc" )
else
some code
end
end
end
我在该行错误
@notaries = Notary.find(:all,:origin =&gt; @ order.signing_location_zip_code,:within =&gt; @miles,:conditions =&gt; “on_vacation IS not true”,:order =&gt;“distance asc”)就像这样,
Geokit :: Geocoders :: GeocodeError in 客户机/ ordersController#find_notary
Geokit ::地址解析器:: GeocodeError
RAILS_ROOT:/ home / user / svnnew_app / trunk / app
应用程序跟踪|框架跟踪|完整跟踪
/home/user/.rvm/gems/ruby-1.8.7-p371@app/gems/geokit-1.5.0/lib/geokit/mappable.rb:282:in `正常化“
/home/user/svnnew_app/trunk/app/vendor/plugins/geokit-rails/lib/geokit-rails/acts_as_mappable.rb:347:in `normalize_point_to_lat_lng'
/home/user/svnnew_app/trunk/app/vendor/plugins/geokit-rails/lib/geokit-rails/acts_as_mappable.rb:306:in `extract_origin_from_options'
/home/user/svnnew_app/trunk/app/vendor/plugins/geokit-rails/lib/geokit-rails/acts_as_mappable.rb:203:in `prepare_for_find_or_count'
/home/user/svnnew_app/trunk/app/vendor/plugins/geokit-rails/lib/geokit-rails/acts_as_mappable.rb:108:in `找到'
/home/user/svnnew_app/trunk/app/app/controllers/client/orders_controller.rb:331:in `find_notary'
请求
参数:
{ “ID”=&gt; “中1198”}
显示会话转储响应
接头:
{“Cache-Control”=&gt;“no-cache”,“Content-Type”=&gt;“”}
如何解决此错误?请帮帮我......
答案 0 :(得分:0)
我维护geokit。我查看了源代码,当API返回的响应不是数字时,就会出现这种情况,例如:一个字符串,但格式不是'99 .99,88.88',所以如果地理编码API返回'NA'或者某些东西就会发生。
我知道StackOverflow说“避免”以下(澄清,意见等),但这里是:
如果没有你做一些事情,我无法进一步帮助:
1)如果你可以更新到最新的geokit(gem:1.7.1或最新的github master)
2)做一些调试,例如打开“/home/user/.rvm/gems/ruby-1.8.7-p371@app/gems/geokit-1.5.0/lib/geokit/mappable.rb”(第282行)并将“put”字符串打开导致错误以及任何其他相关的局部变量。
使用像pry / pry-debugger这样的宝石是任何ruby开发人员调试此类问题的必备条件。
3)尽可能更新其他软件(甚至升级到最新的ruby 1.8.7和rails 2.x) 你是ruby(1.8.7)和rails(2.x)都很老,并且包含各种安全问题,应该引起一些关注。我尽力保持geokit / geokit-rails与ruby 1.8.7一起使用,但即使是rails 2兼容性也被geokit-rails删除了,虽然我很乐意提供帮助,因为你可能会发布geokit-rails中的问题并且支持导轨版本。