0

我有一个 Rails 应用程序。Rails version is 2.3.4ruby version 1.8.7。在那个应用程序中,我使用geokit (1.5.0) gemand geokit-rails 插件来查找最近的位置。

在我的模型中,我有这样的代码,

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 => @order.signing_location_zip_code, :within => @miles, :conditions => "on_vacation IS NOT true",:order=>"distance asc") 像这样,

Geokit::Geocoders::GeocodeError in Client/ordersController#find_notary

Geokit::Geocoders::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 `normalize'

/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 `find'

/home/user/svnnew_app/trunk/app/app/controllers/client/orders_controller.rb:331:in `find_notary'

要求

参数:

{"id"=>"1198"}

显示会话转储响应

标题:

{"Cache-Control"=>"no-cache", "Content-Type"=>""}

如何解决此错误?请帮帮我。。

4

1 回答 1

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行)和至少“放置”导致错误的字符串以及任何其他相关的局部变量。

任何 ruby​​ 开发人员都必须使用像 pry/pry-debugger 这样的 gem 来调试此类问题。

3) 尽可能更新其他软件(甚至升级到最新的 ruby​​ 1.8.7 和 rails 2.x)你的 ruby​​ (1.8.7) 和 rails (2.x) 都已经很老了,并且包含各种安全问题,应该是有些担心。我尽我最大的努力让 geokit/geokit-rails 与 ruby​​ 1.8.7 一起工作,但即使是在 geokit-rails 中也放弃了 rails 2 兼容性,尽管我很乐意提供帮助,因为您的问题很可能是 geokit-rails 中支持的问题轨道版本。

于 2013-12-15T00:29:34.230 回答