Rails’config.time_zone’不适用于加载到text_field的日期时间数据。 固定?

当我在表单中使用datetime_select时,Rails将正确调整日期时间数据的时区(根据我的config.time_zone设置),并在同一表单的edit视图中呈现正确分区时间。

但是当我尝试将相同的数据检索到text_field时(对于相同表单的相同edit视图),Rails似乎不会针对时区进行调整。

/events/edit.html.erb(完整文件):

 

Edit This Event

f %>

/events/_fields.html.erb(仅限相关行:)

 

"datetimefield" %>

示例:我的区域偏移量为-500。 我在表单中输入8:00作为start_time,将13:00 UTC写入数据库,在show页面上show 8:00(感谢config.time_zone计算偏移量),但是当我尝试编辑时对象,start_time的表单的text_field加载13:00(如果提交未更改,则将其存储在数据库中时为18:00)。

这是有问题的,因为我正在尝试使用jQuery UI的DatePicker(带有TimePicker附加组件),它依赖于text_field(不适用于datetime_select )。

有没有办法让Rails将config.time_zone偏移应用于文本字段?

运行Rails 3.0.5,部署到Heroku。

几周前就问过一个非常相似的问题提前道歉。 那里的信息仍然适用,我现在对这个问题有了更好的了解,所以我重新问了一下。

正如我在问题中所说,我遇到的主要问题是让ActiveRecord将现有的’config.time_zone’设置应用于text_fields。

事实certificate,有一种非常简单且面向未来的方法可以实现:只需显式添加:值并提取完全相同的数据 – 无需额外/新方法调用! 就我而言,这意味着:

 <%= f.text_field :time_start, :value => f.object.time_start, :class => "datetimefield" %> 

这是我要尝试的另一个潜在解决方案的中间步骤,我很惊讶地发现它可以自行完成(再次,使用’config.time_zone’我已经在’config / application中设置了。 RB“)。

我已经对它进行了测试,并且在适用时也应用了正确的DST偏移(正如人们所期望的那样,因为设置了’config.time_zone’)。

TimeZone#utc_to_local转换它怎么TimeZone#utc_to_local

查看API文档, http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html