rails单独字段中的日期时间

时间:2009-12-21 20:33:02

标签: ruby-on-rails datetime

我可能过度复杂了我需要做的事情,但这就是我现在所拥有的。

我有一个有2个字段的作业控制器

starts_at as DATETIME
end_time as DATETIME

我使用

将event_date保存在表单中
calendar_date_select :starts_at ,:time => false

我将日期时间保存为

time_select :starts_at, {:twelve_hour => true}

这将保存事件日期,即12/26/2009,开始时间为晚上7:00

我还需要保存事件end_time,而不必重新输入日期,只需要时间

time_select :end_time, {:twelve_hour => true}

如果我只是使用上述内容,时间是正确的,但日期是dafaults到01/01/2000

如何使用starts_at中的相同日期保存日期?

2 个答案:

答案 0 :(得分:0)

在您的控制器中,如果:end_time为nil,请将其设置为: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?

但我不确定您使用的是哪个版本的Rails以及.present?的默认实现对日期的影响。

答案 1 :(得分:0)

您可以在模型或控制器中执行此操作,但事件是否可能在深夜开始并在第二天结束?为了实现这种可能性,我建议选择两个calendar_date_select并在选择开始日期时自动指定结束日期(因此很少使用第二个calendar_date_select)。

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

除非您绝对确定永远不会发生不同的开始和结束日期,否则我不会在接口级别下强制执行此相同日期规则。

相关问题