2009-04-09 55 views
4

我有一個包含一個日期元素和3個時間元素的窗體。這是因爲3個時間事件將在一個日期發生,我不希望用戶必須輸入該日期3次。Ruby Rails Time.change無法正常工作......我檢查了文檔!

在服務器端,我想結合一個日期和3次得到3個日期時間對象。我在想我可以這樣做:

time_object.change(:day => date_object.day, :month => date_object.month, :year => date_object.year) 

但這沒有奏效。下面是一個簡單的測試,我寫了我預期的那樣工作:

def before_validation 
    logger.info("show_time = " + self.show_time.to_s) 
    self.show_time.change(:year => 2012) 
    self.show_time.change(:minute => 30) 
    logger.info("show_time = " + self.show_time.to_s) 
    end 

兩個打印語句應該是不同的,但它們是相同的。有誰知道合併時間和日期對象的最佳方法嗎?

回答

15

您需要指定它。如果你進入腳本/控制檯:

>> t = Time.now 
=> Thu Apr 09 21:03:25 +1000 2009 
>> t.change(:year => 2012) 
=> Mon Apr 09 21:03:25 +1000 2012 
>> t 
=> Thu Apr 09 21:03:25 +1000 2009 
>> t = t.change(:year => 2012) 
=> Mon Apr 09 21:03:25 +1000 2012 
>> t 
=> Mon Apr 09 21:03:25 +1000 2012 

所以也許:

self.show_time = self.show_time.change(:year => 2012) 

可以爲你工作。我不知道我對這個解決方案有什麼看法,但它應該起作用。

+1

我試圖改變一個時間對象的部分有一點運氣分鐘。看着時間的rdocs,找不到任何會導致我使用「更改」方法的東西。感謝這個答案,幫了我很多。 – Tass 2011-10-19 16:55:14

0

還要注意改變你使用:min代替:minute