jas*_*lug 8 forms datetime ruby-on-rails ruby-on-rails-3
当我在表单中使用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.
几周前就问过一个非常相似的问题,提前道歉.那里的信息仍然适用,我现在对这个问题有了更好的了解,所以我再问一遍.
jas*_*lug 16
正如我在问题中所说,我遇到的主要问题是让ActiveRecord将现有的'config.time_zone'设置应用于text_fields.
事实证明,有一种非常简单且面向未来的方法可以实现:只需显式添加:值并提取完全相同的数据 - 无需额外/新方法调用!就我而言,这意味着:
<%= f.text_field :time_start, :value => f.object.time_start, :class => "datetimefield" %>
Run Code Online (Sandbox Code Playgroud)
这是我要尝试的另一个潜在解决方案的中间步骤,我很惊讶地发现它可以自行完成(再次,使用'config.time_zone'我已经在'config/application中设置了'. RB").
我已经对它进行了测试,并且它也适用于适用的DST偏移(正如人们所期望的那样,因为'config.time_zone'已设置).
| 归档时间: |
|
| 查看次数: |
1955 次 |
| 最近记录: |