根据用户的 IP 预填充用户的时区?



我有一个简单的时区字段,格式如下:

<div class="field">
<%= f.label :time_zone %><em> (appointment times will be displayed in your timezone)</em><br>
<%= f.select :time_zone, time_zone_options_for_select(f.object.time_zone, nil, ActiveSupport::TimeZone), {include_blank: true}, class: "form-control" %>
</div>

我在其他地方读过,最好的做法是在字段中预先填充用户IP地址的时区,这将在99%的时间内被用户接受(在不是用户时区的情况下,他们可以简单地更改它(

如何在ruby on rails应用程序中实现这一点?

要根据用户IP查找位置,您需要使用外部API,如IPStack-没有;轨道";因为它不是Rails的特性。

Geocoder gem通常用于此目的,并且它有一个不错的可用于地理编码的服务提供商列表。设置地理编码器后,您可以通过IP:进行查找

results = Geocoder.search("172.56.21.89")
results.first.time_zone

请注意,结果中实际返回的字段取决于使用的后端服务。也可以只使用您想直接与Net::HTTP或您选择的任何HTTP客户端一起使用的任何服务的API。

最新更新