2011-12-05 9 views
1

私のコードをもっと素早く清潔にする方法がわかりません...そして、私はまだ回避しようとしている場合もあります。オフィスでエラーを再現することはできません。それまでは、アプリが緯度や国のコード(場所オブジェクト)の緯度や国番号を見つけることができない電子メールでこれらのエラーが発生していますジオコーダーの宝石遅延によりページが失敗する

「パリ、フランス」になるようにするにはどうすればよいですか? 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 

ヒントは素晴らしいと思います。また、もし私がページをリフレッシュすると、場所はsuddently rightになり、nilオブジェクトのcountry_codeエラーは消えます。

私はちょっと混乱しています。

乾杯、

ジョエル

答えて

0

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

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

私はあなたがそうのように確認することができると信じて:

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

関連する問題