Geocoder Gem - Ruby On Rails - PullRequest
       3

Geocoder Gem - Ruby On Rails

4 голосов
/ 20 октября 2011

Я только что включил гем Geocoder в свое приложение.Все работает отлично, но мне было интересно, смогу ли я использовать драгоценный камень еще дальше.

В моем приложении есть пользователи, которым разрешено добавлять статьи.В настоящее время я могу узнать их IP-адрес, используя

 @article.ip_address = request.remote_ip

. Я искал драгоценный камень, который может помочь мне преобразовать этот IP-адрес в название страны, но я ничего не могу найти.Так как я использую геокодер, и я понимаю, что на их веб-сайте они автоматически определяют мой IP, город и страну.Мне было интересно, как я могу реализовать это на моем контроллере.

def create
@article = Breeder.new(params[:breeder])
@article.user = current_user
@article.ip_address = request.remote_ip

respond_to do |format|
  if @article.save
    format.html { redirect_to @article, notice: 'Article was successfully created.' }
    format.json { render json: @article, status: :created, location: @article }
  else
    format.html { render action: "new" }
    format.json { render json: @article.errors, status: :unprocessable_entity }
  end
end

end

Идея заключается в обнаружении статей, которые не из Великобритании.

https://github.com/alexreisner/geocoder

http://www.rubygeocoder.com/

Ответы [ 3 ]

4 голосов
/ 20 октября 2011

Вы можете использовать geoip gem.

Загрузите GeoIP.dat.gz из http://www.maxmind.com/app/geolitecountry., распакуйте файл. Ниже подразумевается под # {RAILS_ROOT} / db dir.

@geoip ||= GeoIP.new("#{RAILS_ROOT}/db/GeoIP.dat")    
remote_ip = request.remote_ip  
if remote_ip != "127.0.0.1" #todo: check for other local addresses or set default value
  location_location = @geoip.country(remote_ip)
  if location_location != nil     
    @model.country = location_location[2]
  end
end
0 голосов
/ 02 сентября 2014

Да, вы можете использовать геокодер для геокодирования IP-адреса.Геокодер добавляет методы определения местоположения в Request, поэтому вам просто нужно:

sender_ip = request.remote_ip
sender_country = request.location.country
sender_city = request.location.city

Это работает для меня.Надеюсь, это поможет.

0 голосов
/ 20 октября 2011

Возможно, GeoIP - альтернатива для вас:

https://github.com/cjheath/geoip

Это действительно просто. Я не настолько уверен в геокодере, но если вы определенно хотите его использовать, вы можете посмотреть Railsast, который занимается этим.

http://railscasts.com/episodes/273-geocoder

Рельсы, кодирующие женщин, чертовски жарко! ^^

...