if Rails.env.development?
@current_location_geo = Geocoder.search(request.remote_ip).first
else
@current_location_geo = request.location
end
if !@current_location_geo.nil? && @current_location_geo.ip == "127.0.0.1"
@departure_currency_code= "AUD"
@departure_currency_name= ["Australian Dollar(AUD $)","AUD"]
else
@country = Country.new(request.location.data["country_code"].to_s)
@country_code = @country.currency.code
end
end
我正在 request.location nil 。我试图在配置中添加超时但对我没有帮助。
生产模式中的错误"地理编码API的响应无效JSON。"
当我追踪它时,我将request.location设为nil。
我的地理编码器版本是(1.2.6)。
答案 0 :(得分:1)
<强>配置/ initalizers / geocoder.rb 强>
Geocoder.configure(
timeout: 10,
ip_lookup: :telize
)
答案 1 :(得分:1)
您似乎没有可用的操作点来访问选定的地理位置服务。对我来说,对Google
地理服务的可用请求数量太少。我只是通过注册Google
应用程序服务器并添加配置Google API密钥来增加它。对于按Geo
确定IP
位置的服务,建议使用:telize
,因为之前的回答者没有任何请求配额。我还建议您查看本地IP存储的一面,以便将它们转移到Geo位置,例如:geoip2
和:maxmind_local
。所以你的geoconfig将如下:
<强>配置/ initalizers / geocoder.rb:强>
Geocoder.configure(
lookup: :google,
ip_lookup: :geoip2,
maxmind_local: {
package: :city
},
geoip2: {
file: File.join('vendor/share', 'GeoLite2-City.mmdb')
},
google: {
timeout: 20,
use_https: true,
api_key: ENV['GOOGLE_API_KEY']
},
}
注意:似乎:telize
服务目前无法正常运行,返回:Geocoding API's response was not valid JSON
。
请参阅geocoder's README上配置goe服务的所有选项。