Используя драгоценный камень геокодера для рельсов, как мне получить город-посетитель?
https://github.com/alexreisner/geocoder
Я не могу найти документацию, чтобы показать город-посетитель с ip-адреса? Я знаю, как с HTML5, но я хотел бы использовать значение, которое имеет геокодер. Спасибо
Ответы
Ответ 1
Мне потребовалось пару часов, чтобы понять, что ответ довольно прост:
request.location.city
Страница геокодирования имеет этот пример, но я подумал, что мне нужно будет объявить запрос, но нет, больше ничего не нужно.
Если у вас нет Geocoder, вы должны установить камень, но ничего кроме этого.
Ответ 2
Как я это сделал -
location = Geokit::Geocoders::IpGeocoder.geocode(source_ip)
city = location.city
country = location.country
Здесь source_ip является строковым объектом.
Ответ 3
# app/models/user.rb
geocoded_by :ip_address,
:latitude => :lat, :longitude => :lon
after_validation :geocode
Отрывок из геокодера сайт.
Ответ 4
Вы можете сделать это двумя разными способами.
1) Если вы можете получить город/адрес посетителей в виде строки, то геокодер автоматически преобразует это значение в широту и долготу
class Message < ActiveRecord::Base
geocoded_by :full_address
after_validation :geocode
def full_address
"#{city}, Sri Lanka"
end
end
2) Или вам нужно будет отследить ip посетителя, например, на главной странице на камне "геокодер"
ПРИМЕЧАНИЕ. И вы можете использовать метод near следующим образом
<Active Record Object List>.near(<City Name>, <distance>, :order => :distance)
Ex: @messages = @messages.near("colombo", 10, :order => :distance)
и есть супер-пуперный экран, наложенный ryan в railscasts