2009-12-21 26 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将很少使用)。

如果你真的不想要两个日历,也许在开始日期之后的结束日期使用隐藏字段。

我不会在接口级别下执行这个相同的日期规则,除非您绝对确定不会有不同的开始和结束日期。

相关问题