/ / Utilizzando la gemma del geocoder per le rotaie, come posso ottenere la città del visitatore? - ruby-on-rails, ruby-on-rails-3, rails-geocoder

Usando la gemma di geocoder per le rotaie, come posso ottenere la città del visitatore? - ruby-on-rails, ruby-on-rails-3, rails-geocoder

https://github.com/alexreisner/geocoder

Non riesco a trovare la documentazione per mostrare la città del visitatore dall'indirizzo IP? So come con HTML5, ma vorrei usare il valore che ha geocoder. Grazie

risposte:

8 per risposta № 1

Mi ci sono volute un paio d'ore per rendermi conto che la risposta è piuttosto semplice:

request.location.city

Pagina del geocoder ha questo esempio ma ho pensato che avrei dovuto dichiararlo richiesta ma no, non è necessario altro.

Se non si dispone di Geocoder, è necessario installare la gemma, ma nulla oltre a quello.


6 per risposta № 2

Come ho fatto è stato -

location = Geokit::Geocoders::IpGeocoder.geocode(source_ip)
city = location.city
country = location.country

Qui source_ip è un oggetto stringa.


1 per risposta № 3
# app/models/user.rb
geocoded_by :ip_address,
:latitude => :lat, :longitude => :lon
after_validation :geocode

Snippet da geocoder luogo.


1 per risposta № 4

Potresti farlo in 2 modi diversi

1) Se riuscissi a ottenere la città / indirizzo dei visitatori come una stringa, il geocoder lo convertirà automaticamente in latitudine e longitudine

class Message < ActiveRecord::Base
geocoded_by :full_address
after_validation :geocode

def full_address
"#{city}, Sri Lanka"
end

end

2) Altrimenti dovrai tenere traccia dell'ip del visitatore, esempio è nel home page sulla gemma "geocoder"

NOTA: è possibile utilizzare il metodo near nel modo seguente

<Active Record Object List>.near(<City Name>, <distance>, :order => :distance)

Ex: @messages = @messages.near("colombo", 10, :order => :distance)

e c'è uno schermo super-duper cast di ryan in Railscasts