我目前有一个正在运行的应用程序,我想让Rails通过IP地址检测访问者的位置,并在我的网站主页上显示城市和州。例如,它将显示来自City,State"
的" Hello {Name}访客不必输入任何内容。我知道像GeoIP和Geocode这样的东西。据我所知,它们用于从IP搜索位置,反之亦然,但需要手动输入信息。
我需要它在用户访问我的主页时自动执行此操作。我有一个Post Controller和一个主页,我只想在我的主页的HAML中添加一些代码来显示信息。我计划根据位置对用户的帖子进行分类,这些帖子将自动填写(我目前有一个用户必须手动输入的位置字段)。如果你能告诉我如何做到这一点,那就太好了。
有关我需要的实时示例,请访问weather.com,您将在首页上看到您所在的城市(以及天气)。
其他信息:我对Rails 4(2周前开始)相当新,所以请告诉我最简单的方法,如果可能的话,请指出我的视频资源。
答案 0 :(得分:4)
添加到gemfile
gem 'geocoder'
运行bundle install
并重新启动服务器
将<%= request.location.city %>
放在您希望城市名称显示的视图中。
答案 1 :(得分:1)
有许多服务提供RESTful JSON API,它们将根据IP地址为您提供位置数据,例如:http://www.telize.com/
您需要做的只是在您的控制器中,通过Rack::Request
捕获HTTP请求的来源(request.env['REMOTE_ADDR']
)并提供给Geo API。
答案 2 :(得分:0)
另一个解决方案是将ruby gem用于Yandex定位器(https://tech.yandex.ru/locator/)。 Yandex定位器是一种在圆圈描绘的区域中查找移动设备的服务。该服务返回经度,纬度和精度。 https://github.com/sergey-chechaev/yandex_locator
client = YandexLocator::Client.new(api_key: 'api key', version: '1.0')
result = client.lookup(ip: { address_v4: '178.247.233.3' })
result.position
# => {"altitude"=>0.0, "altitude_precision"=>30.0, "latitude"=>41.00892639160156, "longitude"=>28.96711158752441, "precision"=>100000.0, "type"=>"ip"}