【问题标题】:Using the geocoder gem for rails, how do i get the visitor's city?使用地理编码器 gem for rails,我如何获得访问者的城市?
【发布时间】:2013-12-20 04:36:06
【问题描述】:

https://github.com/alexreisner/geocoder

我找不到从 IP 地址显示访问者所在城市的文档?我知道如何使用 HTML5,但我想使用地理编码器的值。谢谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 rails-geocoder


    【解决方案1】:

    我花了几个小时才意识到答案很简单:

    request.location.city
    

    Geocoder page 有这个例子,但我认为我需要声明 request 但不,不需要更多。

    如果您没有 Geocoder,则必须安装 gem,但除此之外什么都没有。

    【讨论】:

    • 当我这样做时,控制台显示空结果。当我在地球上时;)
    • 当我按照这个例子进行操作时,我得到一个 NameError 说“请求”未定义。为什么你没有遇到同样的问题?
    【解决方案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
      

      来自地理编码器site 的片段。

      【讨论】:

      • 我实际上是在寻找它如何为访问者而不是用户返回“nearbys”方法结果。
      【解决方案4】:

      你可以通过两种不同的方式做到这一点

      1) 如果您可以将访问者城市/地址作为字符串获取,则地理编码器会自动将其转换为纬度和经度

      class Message < ActiveRecord::Base
        geocoded_by :full_address
        after_validation :geocode
      
        def full_address
          "#{city}, Sri Lanka"
        end
      
      end
      

      2) 否则您将不得不跟踪访问者的 ip,例如在 'geocoder' gem 上的 home page

      注意:您可以使用 near by 方法,如下所示

      <Active Record Object List>.near(<City Name>, <distance>, :order => :distance)
      
      Ex: @messages = @messages.near("colombo", 10, :order => :distance)
      

      railscastsrailscasts中有一个由 ryan 制作的超级骗子屏幕

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-14
        • 1970-01-01
        • 1970-01-01
        • 2013-03-21
        • 2011-09-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多