gpt4 book ai didi

ruby-on-rails - 为 '/edit' View 填充表单字段时,Rails 应用程序 config.time_zone 不适用

转载 作者:行者123 更新时间:2023-12-04 17:40:01 25 4
gpt4 key购买 nike

我在 Rails 应用程序中指定了 config.time_zone,但在表单字段中检索到的时间仍然呈现为 UTC(这会在更新时产生问题)。这不应该转换为指定区域的本地时间吗?

/config/application.rb(仅相关行):

module ExampleSite
class Application < Rails::Application

config.time_zone = 'Central Time (US & Canada)'
end
end

/events/edit.html.erb(完整文件):
<h1>Edit This Event</h1>
<%= form_for(@event) do |f| %>
<%= render 'fields', :f => f %>
<div class="actions">
<%= f.submit "Update Event" %>
</div>
<% end %>

/events/_fields.html.erb(仅相关行:)
<div class="field">
<%= f.label :time_start, "Start Time" %><br />
<%= f.text_field :time_start, :class => "datetimefield" %>
</div>
<div class="field">
<%= f.label :time_end, "End Time (if applicable)" %><br />
<%= f.text_field :time_end, :class => "datetimefield" %>
</div>

当我输入日期时间字符串以创建新事件时,该值会正确保存(以 UTC 格式)并根据需要(以本地时区)呈现在我的 View 中,它在 config.time_zone 切换之前已呈现 UTC(所以我知道开关已完成)。

但是当我去编辑事件的任何其他属性时,在/edit View 中呈现给表单字段的时间是 UTC 时间——这意味着当我更新事件时,时间被重新保存,好像时间已经被重新输入并假定为本地,这将时间偏移 5 小时(我的本地与 UTC 的差异),因为系统将“更新”时间属性转换为 UTC 进行存储。

如何在表单字段中呈现本地化时间?

运行Rails 3.0.5,部署到Heroku(虽然开发和生产环境都存在问题)

最佳答案

事实证明,真正的问题在于 text_fields 本身。

我的 'config.time_zone' 设置在我的 'index' 和 'show' View 中工作得很好(没有任何额外的方法或黑客),它也可以在 'edit' View 中工作,只要我使用 datetime_select 代替一个 text_field。

由于这不是我的选择(我使用 jQuery UI 的 DatePicker,它需要一个 text_field),我调查了 text_field 特定问题和 answered another StackOverflow question of my own on the subject .

如果您遇到 text_field 问题,请查看该问题/答案。

关于ruby-on-rails - 为 '/edit' View 填充表单字段时,Rails 应用程序 config.time_zone 不适用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6336235/

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