gpt4 book ai didi

ruby-on-rails - rails 4 : wrong time in edit view with string field and TimeZone per request

转载 作者:行者123 更新时间:2023-12-02 21:30:34 26 4
gpt4 key购买 nike

我在 Ruby on Rails 4 中开发了一个应用程序,每个请求都使用 TimeZone。

我想在我的应用程序中使用日期时间选择器 ( http://xdsoft.net/jqplugins/datetimepicker/ ) 来替换默认的 Simple_form 日期时间输入(5 个组合框...)。

对于这种日期时间选择器(我搜索其他的,都是一样的),在我看来,我必须使用“字符串”字段,如下所示:

<%= f.input :done_at, as: :string, input_html: { :data => { :behaviour => "datetimepicker" } } %>  

当我发布表单时,Rails 会处理时区并将 UTC 时间存储在数据库中。
例如,我在字段中输入“2014-03-14 19:45:07”(本地时间是巴黎,所以UTC +0100),数据库中有“2014-03-14 18:45:07” ,采用世界标准时间。这是正确的。

但是当我想编辑信息时,Rails 填写了错误的时间字段。偏移时区丢失,并且字段中有“2014-03-14 18:45:07”(UTC 时间),因此比正确时间早 1 小时。

如何获得正确的时间来照顾用户时区? (不是UTC)

我尝试了 http://jessehouse.com/blog/2013/11/15/working-with-timezones-and-ruby-on-rails/ 上找到的解决方案覆盖日期的显示,但它不起作用。

def done_at
super.in_time_zone(time_zone) if super && time_zone
end

如果在我看来,我输入@action.done_at,时间是正确的,但不在字段中。

谢谢

弗雷德

最佳答案

显式设置输入的值。如果需要,您可以将 @object.done_at.in_time_zone(time_zone) 移至助手

<%= f.input :done_at, as: :string, input_html: { :data => { :behaviour => "datetimepicker" }, :value => @object.done_at.in_time_zone(time_zone).strftime('%d-%m-%Y  %H:%M') } %> 

关于ruby-on-rails - rails 4 : wrong time in edit view with string field and TimeZone per request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22413386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com