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

标签 ruby-on-rails ruby-on-rails-3 forms datetime timezone

我在 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/

相关文章:

ruby-on-rails - Rails 应用程序中的游戏逻辑在哪里?

ruby - 使用 identity_cache 和 delayed_job 的哈希的未定义方法标记

php - 如何使用 MySQL 制作 PHP/HTML 表单?

jquery - ToggleClass 基于复选框状态

ruby-on-rails - 安装 mysql2 gem 错误

ruby-on-rails - 用户首次登录时显示对话框

ruby-on-rails - 我在 ruby​​ 1.9.2 段错误中发现了错误

ruby-on-rails - 如何在 Rails 中动态调用路由助手?

php - 从具有相同名称的多个选择框中获取值?在 jquery 和 php 中包含它的值

ruby-on-rails - 依赖销毁不起作用,has_many :model, :dependent => :destroy