Я указал config.time_zone в моем приложении Rails, но время, полученное в полях формы, по-прежнему отображается как 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>
Когда я ввожу строку datetime для создания нового события, значение сохраняется должным образом (в формате UTC) и отображается в моих представлениях по желанию (в местном часовом поясе) где отображал UTC до переключателя config.time_zone (так что я знаю, что переключение было выполнено).
Но когда я перехожу к редактированию любого другого атрибута события, время, отображаемое в поле формы в представлении / edit, является временем UTC - это означает, что когда я обновляю событие, время повторно сохраняется, как если бы время было повторно введено и предполагалось локальным, что сдвигает время на 5 часов (мое местное отличие от UTC), поскольку система преобразует атрибут «обновленного» времени в UTC для хранения.
Как мне сделать так, чтобы локализованное время отображалось в моих полях формы?
Запуск Rails 3.0.5, depl в соответствии с Heroku (хотя проблема существует как в среде разработки, так и в рабочей среде)