2011-12-05 115 views
1

我不知道如何讓我的代碼更好,更清潔了......並且我仍然以某些情況下爲零位置對象,我試圖避免這種情況。我不能在辦公室重新報錯。在那之前,我通過電子郵件發現那些應用程序無法在無對象(位置對象)上找到緯度或country_code的錯誤Geocoder gem延遲導致頁面失敗

那麼,我應該怎麼做才能確保該位置成爲「法國巴黎」是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消失...... ??

我很困惑,我現在可以解決後者。

乾杯,

喬爾

回答

0

Occasionaly地理編碼器可以在不引發異常返回一個錯誤。這是在您使用的API(Google,Yahoo等)返回API錯誤時引起的。默認的API是谷歌。他們的每日請求限制爲2500,如果您未使用您註冊的API密鑰,則使用服務器的IP地址確定是否超出限制。這是你的問題最可能的原因。

在訪問它之前,您需要檢查@location變量中是否有實際的數據。

我相信你可以檢查像這樣:

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