相关疑难解决方法(0)

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

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

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

/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 %>
Run Code Online (Sandbox Code Playgroud)

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

<div class="field">
    <%= f.label      :time_start, "Start Time" %><br />
    <%= f.text_field  :time_start, :class => "datetimefield" %>
</div>
Run Code Online (Sandbox Code Playgroud)

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

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

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

运行Rails 3.0.5,部署到Heroku.

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

forms datetime ruby-on-rails ruby-on-rails-3

8
推荐指数
1
解决办法
1955
查看次数

当列具有类型datetime时,如何在表单上显示本地时间以UTC格式保存在数据库中

我有一个名为的列test_date,输入datetimeGeneral Exam表.我在表单上构建了一个表单来创建和更新GeneralExam,我允许用户选择一个日期和时间jQuery UI Datepicker.

用户选择日期和时间后,它将显示在文本字段中,如:

25-11-2012 16:30

这是我现在的时间.当我在控制台中运行时,我看到test_date保存在数据库中的是:

2012-11-25 09:30:00

当我获得对象GeneralExam并获得test_date价值时,它是:

g = GeneralExam.last
g.test_date
=> Sun, 25 Nov 2012 16:30:00 ICT +07:00
Run Code Online (Sandbox Code Playgroud)

我认为test_date是转换,因为我设置的application.rb是:

config.time_zone = 'Hanoi'
Run Code Online (Sandbox Code Playgroud)

但是当我在表单上更新常规考试时,它仍然显示时间保存在数据库中,而不是我的本地时区,这意味着它显示:

2012-11-25 09:30:00

但我希望它就像我在表单上选择的那样:

25-11-2012 16:30:00

如何在本地时间设置显示日期时间列?

而且我认为日期的顺序是相反的,当我选择日期时,它是25-11-2012,但是当它显示它时2012-11-25,为什么它颠倒了顺序?

ruby-on-rails ruby-on-rails-3

3
推荐指数
1
解决办法
2663
查看次数

标签 统计

ruby-on-rails ×2

ruby-on-rails-3 ×2

datetime ×1

forms ×1