2013-10-30 47 views
0

我在rails 3中有一個簡單的搜索表單,它有兩個日期字段。我有一個問題讓我的MySQL數據庫這些日期。無法將日期格式從rails窗體轉換爲mysql db

我試過使用american_date gem,在我的初始化程序中,在config/locales/en.yml文件中指定日期格式,並直接在日期字段本身的日期。目前,我設置在視圖中軌批准的日期格式 -

<%= f.text_field :depart_date, :value=> Date.today.strftime('%Y-%m-%d') %> 

的日期格式在我的數據庫也YYYY-MM-DD,這樣的事情應該順利。

控制檯告訴我,兩個日期字段都class = "Date"

我想我已經找到了脫節。從日誌 -

Started POST "/searches" for 127.0.0.1 at 2013-10-30 17:43:26 -0400 
Processing by SearchesController#create as HTML 
Parameters: {"utf8"=>"√","search"=>{"depart_date"=>"2013-10-30", 
"return_date"=>"2013-11-09"} 
←[1m←[35m (0.0ms)←[0m BEGIN 
←[1m←[36mSQL (0.0ms)←[0m ←[1mINSERT INTO `searches` (`depart_date`,`return_date`) 
VALUES ('2013-30-10','2013-09-11')←[0m 
←[1m←[35m (2.0ms)←[0m COMMIT 

請注意,月和日值在insert語句中切換。我怎樣才能防止這種情況發生?

+0

當你使用'<%= f.text_field:depart_date,:值=>會發生什麼Date.today%>' –

+0

另一個選項正在嘗試'Date.today.strftime('%m /%d /%Y')' –

+0

最重要的是讓Rails爲您做翻譯,所以使用最小化Rails標準並通過api中的示例而不是用我從痛苦的經歷中學到的格式。 –

回答

0

很有可能您的時區設置不正確。 檢查您的MySQL正在使用哪個時區以及Rails正在使用哪個時區。

你可以嘗試迫使你的軌道時區應用程式,例如這個

class Application < Rails::Application 
    config.time_zone = 'Eastern Time (US & Canada)' 
end 
+0

我設置了'config.time_Zone ='東部時間(美國和加拿大)'',並且用':local'嘗試了一次,並確認數據庫實例正在使用'SYSTEM'時間。不過,它仍然沒有正確保存日期。 – Steve