當我在窗體中使用datetime_select時,Rails將正確調整日期時間數據的時區(按照我的config.time_zone
設置),並且將呈現同一表單的edit
視圖中的正確時區。Rails的config.time_zone不適用於加載到text_field的日期時間數據。固定?
但是,當我嘗試將相同的數據檢索到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 %>
/events/_fields.html.erb(相關線路只:)
<div class="field">
<%= f.label :time_start, "Start Time" %><br />
<%= f.text_field :time_start, :class => "datetimefield" %>
</div>
例子:我區域的偏移量是-500。我在表單中輸入8:00作爲start_time,將13:00 UTC寫入數據庫,8:00呈現在show
頁面(感謝config.time_zone
佔偏移量),但是當我嘗試編輯該對象時, start_time的表單的text_field被加載到13:00(如果提交時沒有改變,它會在存儲在數據庫中時變爲18:00)。
這是有問題的,因爲我試圖使用jQuery UI的DatePicker(帶有TimePicker插件),它依賴於text_field(不會與datetime_select
一起使用)。
有沒有辦法讓Rails將config.time_zone
偏移量應用到文本字段?
運行Rails 3.0.5,部署到Heroku。
道歉提前幾個星期前問了一個非常similar question。那裏的信息仍然適用,我現在對問題有了更好的理解,所以我重新提出了問題。
醜陋但似乎是現在唯一的選擇... – Mirko
確實,甚至4年後的最佳解決方案。 如果您使用簡單表格: 'f.input:time_start,input_html:{value:f.object.time_start}' –