根据用户的IP地址提供不同/动态内容

时间:2012-12-08 05:41:14

标签: ruby-on-rails geolocation ip

假设我的IP地址是x.x.x.1(NYC),您的IP地址是x.x.x.2(洛杉矶)。

我访问mydomain.com/stuff,我看到有关“东西”的帖子,但仅限于纽约地区(基于我的IP地址)。您访问mydomain.com/stuff并看到有关“东西”的线索,但仅限于洛杉矶地区(基于您的IP地址)。

一般问题:使用Ruby on Rails,如何根据访问者的IP地址制作相同的网址mydomain.com/stuff显示动态内容?例如,我知道企业软件,如Monetate,它允许网站更改网站上的图像/文本,以显示夹克到纽约的IP地址,但泳装到夏威夷的IP地址。

我目前的做法如下:我的“帖子”模型有字段:“user_id”,“content”,“ip”,“city”。我将使用geokit-gem从“ip”地址填充“city”字段。从那里,我可以阅读访问者的IP地址,推断他们的城市,并过滤页面内容以匹配访问者的城市。但...

具体问题:我如何(1)获取访问者的IP地址,以及(2)通过路由从访问者传递该IP地址并将其传递到管理“显示”操作的控制器中,以便我可以基于城市的过滤器?

对上述问题#1-#2的答案给出的分数,识别我的一般方法中的缺陷,并概述您自己的方法。

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式获取IP: request.remote_ip

您可以使用Geocoder https://github.com/alexreisner/geocoder

检查此RailsCast http://railscasts.com/episodes/273-geocoder

此流程对我来说似乎不错,您可以根据城市过滤帖子,也可以按附近地点进行过滤。