2009-12-21 56 views
1

我可能過度複雜了我需要做的事情,但這是我現在擁有的。在單獨的字段中導入日期時間

我有了2場

starts_at as DATETIME 
end_time as DATETIME 

一個職位控制器I採用

calendar_date_select :starts_at ,:time => false 

我保存日期時間爲

time_select :starts_at, {:twelve_hour => true} 

這節省EVENT_DATE的形式保存活動日期,即12/26/2009,開始時間爲下午7:00

我還需要保存事件END_TIME,而無需重新輸入日期,只是時間

time_select :end_time, {:twelve_hour => true} 

如果我只是使用上面,時間是正確的,但日期dafaults爲01/01/2000

如何從starts_at中保存同一日期的日期?

回答

0

在你的控制,如果:end_time爲零,將其設置爲:starts_at變量,像這樣:

object.end_time = object.starts_at unless not object.end_time.nil? 

您可能能夠最終縮短

object.end_time = object.starts_at unless object.end_time.present? 

但我m不知道你正在使用哪個版本的Rails,以及默認的.present?對日期的做法。

+0

我的控制器應該在哪裏。我已經把它放在我的更新操作之上,沒有任何反應。但也不會設置這個時間的日期? – Fresh 2009-12-21 22:33:15

+0

如果您希望它們可由用戶編輯,則您需要在新的和編輯控制器方法中執行此操作。如果你不希望用戶對它有任何控制,那麼你可以像你說的那樣把它放在頂端的創建和更新方法中。 – 2009-12-22 16:10:00

0

你可以在模型或控制器中做到這一點,但是不可能一個事件會在深夜開始並在第二天結束?爲了讓這種可能性,我建議有兩個calendar_date_select s和自動分配結束日期時選擇開始日期(所以第二calendar_date_select將很少使用)。

如果你真的不想要兩個日曆,也許在開始日期之後的結束日期使用隱藏字段。

我不會在接口級別下執行這個相同的日期規則,除非您絕對確定不會有不同的開始和結束日期。

相關問題