0

我想获取系统的真实 IP,以便进一步获取位置(使用地理编码器 gem)。我正在使用设计 gem 的可跟踪模块来获取用户的 IP。当我尝试对 IP 进行地理编码时,它会失败,因为devise返回的 last_signed_in_ip 始终是 127.0.0.1。我在浏览器中仔细检查了位置权限,所以这似乎不是问题,因为它允许在那里跟踪位置。有什么问题?

此外,有没有更好的方法来找出一个人的位置(除了跟踪 IP 地址然后对其进行地理编码?)。如果用户不允许或不知道此类设置,是否可以再次要求用户允许从应用程序内进行位置跟踪?

提前感谢所有帮助。

谢谢

4

2 回答 2

0

request.remote_ip会解决你的问题...

它永远不会返回您自己的 m/c 地址,而是如果您需要远程地址来(测试)您的地理编码,我建议将 127.0.0.1 添加到将 IP 地址与位置匹配的数据库表中

您可以像这样进行硬编码以进行测试:

if request.remote_ip == '127.0.0.1'
  # Hard coded remote address
  '123.45.67.89'
else
  request.remote_ip
end
于 2013-10-26T08:47:18.560 回答
0

如果您想以编程方式返回您的外部 IP 地址,那么您需要从该地址访问您的应用程序。

当您在 localhost 访问您的应用程序时,request.remote_ip将返回 127.0.0.1,因为这是您的 localhost IP 地址。

为了解决这个问题,您可以将您的开发端口(通常为 3000)从您的路由器转发到您的 PC,然后通过在浏览器中输入您的外部 IP 地址而不是本地主机(例如:123.123.123.123:3000)来访问您的应用程序。

或者,将您的外部 IP 地址添加到指向 localhost(即:)的主机文件中localhost 123.123.123.123,然后如上所述通过您的外部 IP 地址浏览到您的应用程序。

于 2013-10-26T11:31:28.153 回答