2017-02-14 3 views
0

Я использую Rails 4.2. Я хочу отобразить местоположение текущего пользователя на карте. Я пытаюсь использовать геокодер для того же самого. Неожиданно request.location не отображает ожидаемые данные.Получить текущее местоположение пользователя в рельсах 4.2

>request.location 
=> #<Geocoder::Result::Freegeoip:0x007fed262bf690 
@cache_hit=nil, 
@data= 
    {"ip"=>"::1", 
    "city"=>"", 
    "region_code"=>"", 
    "region_name"=>"", 
    "metrocode"=>"", 
    "zipcode"=>"", 
    "latitude"=>"0", 
    "longitude"=>"0", 
    "country_name"=>"Reserved", 
    "country_code"=>"RD"}> 

> request.remote_ip 
=> "::1" 
> request.env['REMOTE_ADDR'] 
=> "::1" 

Любые предложения? Это необходимо для работы во всех средах.

+0

похоже, что вы получаете доступ к этому через localhost, поэтому он дает вам правильное местоположение (IE localhost). Геокодер использует сетевой адрес, чтобы получить приблизительное местоположение пользователя, поэтому он работает так, как ожидалось. Вам нужно будет использовать другое решение, если вы хотите запросить браузер/устройство для информации о местоположении – Doon

ответ

0

Геокодер получает адрес на основе IP-адреса клиента. Поскольку клиент, который находится за VPN или другой сетью, он не является надежным. Я закончил использование геолокации HTML5, которая является надежной.

Смежные вопросы