2016-09-07 84 views
0

在我的應用程序中,我有一個窗體,用於創建帶有time.select的班次。但是,視圖中顯示的時間錯誤了一個小時,數據庫中顯示的時間錯誤了兩個小時。如果我選擇start_time爲10:00並將stop_time設置爲12:00,則在視圖中顯示爲9:00-11:00,而在檢查控制檯時顯示爲08:00-10:00。導軌形式和時區

我想要時間對應於系統時間。在控制檯輸入Time.now可以給出正確的時間。我很困擾。

究竟是什麼錯誤,我該如何解決這個問題?

我使用rails 5和sqlite數據庫。

形式:

<div class="field"> 
    <%= f.label :Start %> 
    <%= f.time_select :start_time, {minute_step: 30} %> 
    </div> 
    <br> 
    <div class="field"> 
    <%= f.label :Stop %> 
    <%= f.time_select :stop_time, {minute_step: 30} %> 
    </div> 

application.rb中

config.time_zone = 'Stockholm' 
config.active_record.default_timezone = :local 
config.active_record.time_zone_aware_types = [:datetime, :time] 

回答

0

這可能是一個權宜之計: 在選擇框中添加不同的名稱,用正確的時區,但讓數據庫保存它在0時區。

控制器:

@start_times_correct = Model.pluck(:start_time).map{|value| [value.in_time_zone('Stockholm'), value]} 

查看:

= f.select(:start_time, options_for_select(@start_times_correct)) 

注:本作品在軌道4,我希望這是在軌道5個可用了。您還可以使用編輯的值使用strftime來自定義日期的顯示方式。

+0

謝謝您的回答,但這是我想避免的解決方案類型。希望有一個更穩定的解決方案。 – SKR

+0

Mysql在數據庫中提供時區,如果您不使用之前存在的數據庫,您可以查看該數據庫 –