2012-04-09 14 views

Trả lời

8

Phải mất một vài giờ cho tôi nhận ra rằng câu trả lời là khá đơn giản:

request.location.city 

Geocoder page có ví dụ này nhưng tôi nghĩ rằng tôi sẽ cần phải khai báo yêu cầu nhưng không có, không có gì hơn là cần thiết.

Nếu bạn không có bộ mã hóa địa lý, bạn phải cài đặt đá quý nhưng không có gì ngoài điều đó.

+0

khi tôi thực hiện việc này, bảng điều khiển hiển thị kết quả trống. trong khi tôi làm theo hành tinh trái đất;) – ImranNaqvi

+0

Khi tôi làm theo ví dụ này, tôi nhận được một NameError mà nói "yêu cầu" là không xác định. Tại sao bạn không có cùng một vấn đề? – sabaeus

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

Đoạn mã từ mã địa lý site.

+0

Tôi thực sự đang tìm cách trả về kết quả của phương pháp "nearbys" cho khách truy cập, chứ không phải người dùng. – kinet

1

Bạn có thể làm điều đó trong 2 cách khác nhau

1) Nếu bạn có thể nhận khách thành phố/địa chỉ như là một chuỗi sau đó geocoder sẽ tự động chuyển đổi mà ở vĩ độ và kinh độ

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

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

end 

2) Hoặc nếu không bạn sẽ phải theo dõi các chỉ iP của người truy cập, ví dụ là trong home page vào 'geocoder' viên ngọc

LƯU Ý: Và bạn có thể sử dụng gần bằng phương pháp như sau

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

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

và có một màn hình siêu Duper đúc bởi ryan trong railscasts

6

Làm thế nào tôi đã làm nó là -

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

Ở đây, source_ip là một đối tượng chuỗi.

+0

chính xác những gì tôi đang tìm kiếm ... cảm ơn! – kinet

Các vấn đề liên quan