1

コードをきれいにきれいにする方法がわかりません...そして、場合によっては場所オブジェクトがゼロになることもありますが、これを回避しようとしています...そして、オフィスでエラーを再現することはできません。それまでは、アプリが nil オブジェクト (場所オブジェクト) で latitude または country_code を見つけることができないというエラーをメールで受け取ります。

では、場所が「パリ、フランス」になるようにするにはどうすればよいですか? IP またはアドレスが Geocoder で機能しませんか?

def find_current_location_from_ip(ip)
    unless Geocoder.search(ip).nil? || Geocoder.search(ip)[0].nil?
      @location = Geocoder.search(ip)[0].country_code == "RD" ? 
          Geocoder.search("Paris, France")[0] : Geocoder.search(ip)[0]
    else
      @location = Geocoder.search("Paris, France")[0]
    end
    @location
end

def find_current_location_from_address(address)
    Geocoder.search(address).blank? ? 
        Geocoder.search("Paris, France")[0] : Geocoder.search(address)[0]
end

どんなヒントも素晴らしいでしょう。また、ページを更新すると、場所が突然正しくなり、country_code on nil object エラーが消えるように見えます... ??

私は今、後者に対処できるかについて少し混乱しています。

乾杯、

ジョエル

4

1 に答える 1

0

Geocoder は、例外を発生させずにエラーを返すことがあります。これは、使用している API (google、yahoo など) が API エラーを返した場合に発生します。デフォルトの API は google です。1 日あたりのリクエスト数は 2500 に制限されており、サインアップした API キーを使用していない場合は、サーバーの IP アドレスを使用して制限を超えたかどうかを判断します。それがあなたの問題の最も可能性の高い原因です。

@locationアクセスする前に、変数に実際にデータがあることを確認する必要があります。

次のように確認できると思います:

puts @location[:country_code] unless @location.empty?

于 2012-02-21T02:03:56.913 に答える