Используя драгоценный камень геокодера для рельсов, как мне получить город-посетитель?

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