所以我目前有汽车预订功能。
目前,将预订开始时间设置为“ 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)
任何有关解决我的问题的技巧将不胜感激
答案 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
希望这就是您想要的。