我可能过度复杂了我需要做的事情,但这就是我现在所拥有的。
我有一个有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中的相同日期保存日期?
答案 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
)。
如果你真的不想要两个日历,可以在开始日期之后的结束日期使用隐藏字段。
除非您绝对确定永远不会发生不同的开始和结束日期,否则我不会在接口级别下强制执行此相同日期规则。