我正在开发rails 4应用程序。我想显示我创建评论的时间。如果我在印度打开网站,那么时间应该显示在IST中(根据印度标准),如果我在美国,那么对于我在印度发表的相同评论,时间应该根据美国时区显示。
对于开发和生产,我需要在配置文件中做什么?
我需要更改数据库中的任何内容吗?
请帮帮我。
Rails总是以UTC(世界时)保存时间,并且服务器有一个设置,可以告诉它(服务器)运行在哪个时区
为了向客户端显示不同的时间,Rails(在服务器上运行)需要知道客户端所在的时区。这不在标准的请求头中,所以你需要让他们以某种方式提交信息。一旦你知道了他们的时区,你就可以确保你总是使用他们的时区向用户显示时间——这方面有帮助。
获取他们的时区可以明确地完成,例如,在他们的"我的账户"页面中给他们一个时区下拉列表,然后将其保存在他们的用户记录中,和/或如果你不知道的话,提前设置并强迫他们在弹出窗口中选择一个。
或者,你可以使用Javascript为他们做这件事,在cookie中传递它。有关如何做到这一点的示例,请参阅本文
http://thisbythem.com/blog/clientside-timezone-detection/
一个解决方案可以是将用户的时区存储在数据库中,编写一个过滤器ApplicationController
中的around_action
,它将从数据库字段中将Time.zone设置为Time_zone。
您可能需要查看rails api 中的Time.zone和TimeZone
这是一个railscast,你可以从评论和github链接中找到它。