我正在使用rails 4应用程序。我想展示我创建评论的时间。如果我在印度打开网站,那么时间应该在IST中显示(根据印度标准),如果我在美国,那么我在印度时间制作的相同评论应该按照美国时区显示。
我的配置文件中需要做什么才能进行开发和生产?
我是否需要更改数据库中的任何内容?
请帮帮我。
答案 0 :(得分:1)
一个解决方案可以是将用户的时区存储在数据库中,编写过滤器
around_action
中的ApplicationController
,它会将Time.zone设置为数据库字段中的time_zone。
您可能希望在rails api中查看Time.zone和TimeZone
这是一个railscast,您可以从评论和github链接中找到它。
答案 1 :(得分:1)
Rails总是以UTC(通用时间)保存时间,并且服务器有一个设置,告诉它(服务器)正在运行的时区。
要向客户端显示不同的时间,Rails(在服务器上运行)将需要知道客户端所在的时区。这不在标准请求标头中,因此您需要让他们提交信息不知何故。一旦你知道他们的时区,你可以确保你总是使用他们的时区向用户显示时间 - 有帮助者。
获取他们的时区可以明确地完成,例如通过在他们的“我的帐户”页面中给他们一个时区下拉菜单,然后将其保存在他们的用户记录中,和/或通过使其更加提前,并迫使他们选择一个弹出窗口,如果你不知道的话。
或者,你可以使用Javascript为他们做这件事,在cookie中传递它。有关如何执行此操作的示例,请参阅此文章。