2012-04-09 14 views

Respuesta

8

Me tomó un par de horas para darme cuenta de que la respuesta es bastante simple:

request.location.city 

Geocoder page tiene este ejemplo pero pensé que iba a necesitar para declarar solicitud pero no, nada más es necesario.

Si no tiene Geocoder tiene que instalar la gema pero nada aparte de eso.

+0

cuando hago esto, la consola muestra el resultado vacío. mientras estoy en el planeta tierra;) – ImranNaqvi

+0

Cuando sigo este ejemplo, obtengo un NameError que dice "solicitud" no está definido. ¿Por qué no tienes el mismo problema? – sabaeus

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

Fragmento del geocodificador site.

+0

Estoy buscando cómo devuelve los resultados del método "nearbys" para los visitantes, no para los usuarios. – kinet

1

Usted puede hacerlo de 2 maneras diferentes

1) Si se pudiera conseguir que los visitantes de la ciudad/dirección como una cadena y luego geocodificador convertirá automáticamente que, en la latitud y longitud

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

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

end 

2) O de lo contrario se tiene que realizar un seguimiento de la IP del visitante, ejemplo está en el home page en la gema 'geocodificador'

NOTA: Y se podría utilizar cerca por el método de la siguiente manera

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

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

y hay una pantalla requete proyectada por Ryan en railscasts

6

¿Cómo lo hice fue -

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

Aquí, source_ip es un objeto de cadena.

+0

exactamente lo que estaba buscando ... ¡gracias! – kinet

Cuestiones relacionadas