我使用的是Rails 3.0.5,由于这个问题中指定的原因,我需要在text_field输入上调用一个utc_to_local方法来获取日期时间。
我尝试过以各种方式直接在视图中调用该方法(作为起点(,但似乎找不到神奇的组合(以前从未在表单字段上调用过方法(。
/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>
直接回答:
<%= f.text_field :time_start, :value => f.object.time_start.try(:method_name) :class => "datetimefield" %>
但是。。。为什么不使用in_time_zone
?
Time.now.in_time_zone("Eastern Time (US & Canada)")
这将导致创建一个应用程序助手:
def time_zoned(string)
return nil if string.nil?
begin
time = Time.parse(string)
rescue
return nil
end
time.in_time_zone("Eastern Time (US & Canada)")
end
在你看来:
<%= f.text_field :time_start, :value => time_zoned(f.object.time_start) %>