从当前时间选择表格15分钟

时间:2018-09-11 08:47:03

标签: ruby-on-rails datetime erb

所以我目前有汽车预订功能。

目前,将预订开始时间设置为“ DateTime.now + 15分钟” 。因此,创建预订后,开始时间将自动从当前时间开始15分钟。

用户可以使用Time_select来选择预订的结束时间:

 <div class="field">
    <text><label><%= form.label :end_time %></label></text>
    <div class="col-md-0">
      <%= form.time_select :end_time, id: :booking_end_time %>
    </div>
 </div>

我要实现的目标不是让用户通过单独选择小时和分钟值来选择时间,而是要像这样:

<select name="post[end_time]" >
  <option value= "#{DateTime.now + 30.minutes}" >15 Minutes</option>
  <option value= "#{DateTime.now + 45.minutes}" >30 Minutes</option>
  <option value= "#{DateTime.now + 60.minutes}" >45 Minutes</option>
</select> 

要让他们从下拉菜单中进行选择,他们可以在其中选择“ 15分钟”之类的选项,这意味着他们将在15分钟内预订汽车。

为了更加清楚,这就是我的预订创建功能目前的样子

def create
    params[:booking][:user_id]= current_user.id
    params[:booking][:start_time]= DateTime.now + 15.minutes
    @booking = Booking.new(booking_params)

任何有关解决我的问题的技巧将不胜感激

1 个答案:

答案 0 :(得分:1)

您可以如下设置选项,而不是直接将其设置为<option value= "#{DateTime.now + 30.minutes}" >15 Minutes</option>

<select name="post[end_time]" >
  <option value= "30" >15 Minutes</option>
  <option value= "45" >30 Minutes</option>
  <option value= "60" >45 Minutes</option>
</select>

现在,您可以按以下方式修改控制器创建:

def create
  params[:booking][:user_id]= current_user.id
  params[:booking][:start_time]= DateTime.now + 15.minutes
  params[:booking][:end_time]= DateTime.now + (params[:post][:end_time].to_i).minutes
  @booking = Booking.new(booking_params)
end

希望这就是您想要的。