我有两个字段start_time
和end_time
两个字段都以日期时间格式存储。
我想要一些帮助的问题是,如何使用start_time属性输入的日期来形成end_time属性的日期(并且只是提示时间方面),因为开始+结束时间将具有同一天,时间会有所不同。
<div class="field">
<%= f.label :start_time %>
<%= f.datetime_select :start_time, :minute_step => 15, :default => Time.now+1.week, :order => [:month, :day, :year] %>
</div>
<div class="field">
<%= f.label :end_time %>
<%= f.time_select :end_time, :ignore_date => true, :minute_step => 15 %>
</div>
答案 0 :(得分:0)
您需要通过javascript执行此操作。
使用on key up事件。
$("#start").keyup(function(){
...
});
如果使用jquery,则在任一输入上使用.val()getter和setter。
d = Date($("#start").val())
d2 = Date(d.getday(), d.getMonth(), d.getDay());
$("#end").val(d2);
类似的东西。
使用日期时间对象的方法为日期月份格式化日期。
答案 1 :(得分:0)
通过使用以下代码添加before_save方法解决了这个问题:
sale_times.each do |sale|
sale.end_time = DateTime.parse("#{sale.start_time.strftime("%x")} #{sale.end_time}")
end
查看代码:
<div class="field">
<%= f.label :start_time %>
<%= f.date_select :start_time, :minute_step => 15, :default => Time.now+1.week, :order => [:month, :day, :year] %>
</div>
<div class="field">
<%= f.label :end_time %>
<%= f.time_select :end_time, :minute_step => 15 %>
</div>