我有一个使用simple_form渲染到隐藏表单字段的日期时间。该字段名为next_event:erb行如下所示:
<%= f.input :next_event, as: :hidden, label: false %>
我希望此字符串成为用户本地时区的日期时间。如果我在控制器代码中设置断点,我可以看到该变量位于正确的时区(在本例中为MDT):
:next_event => Wed, 28 May 2014 15:30:00 MDT -06:00,
但是,当它以HTML格式呈现时,日期时间将转换为UTC:
<input class="hidden" id="foo_next_event" name="foo[next_event]" type="hidden" value="2014-05-28 21:30:00">
如何让simple_form停止转换为utc?
答案 0 :(得分:3)
您可以手动指定值,以便TimeZone转换不会发生:
<%= f.input :next_event, as: :hidden, label: false, input_html: { value: f.object.next_event.to_s } %>
另一种选择......可能是对您的属性使用*_before_type_cast
方法。所以在模型中定义:
def next_event_before_type_cast
self[:next_event].to_s
end
使用这种方法,你应该得到你想要的结果,而不必担心在这里(或其他地方)格式化日期。