Ruby on rails 使用datetime\u select在表单中设置结束时间和开始时间

Ruby on rails 使用datetime\u select在表单中设置结束时间和开始时间,ruby-on-rails,ruby,forms,ruby-on-rails-5,Ruby On Rails,Ruby,Forms,Ruby On Rails 5,我正试图建立一个预订表单,人们可以在这里预订服务。在服务模型中有一个持续时间集,我想用它来自动填充结束时间。例如,如果我在2017-03-22下午1点预订了60分钟的服务,我希望结束时间设置在同一天,但要晚一小时。可以用表格寄这个吗 <%= form_for([service, service.bookings.new]) do |f| %> <div class="row"> <div class="col-sm-12"> <%

我正试图建立一个预订表单,人们可以在这里预订服务。在服务模型中有一个持续时间集,我想用它来自动填充结束时间。例如,如果我在2017-03-22下午1点预订了60分钟的服务,我希望结束时间设置在同一天,但要晚一小时。可以用表格寄这个吗

<%= form_for([service, service.bookings.new]) do |f| %>
  <div class="row">
    <div class="col-sm-12">
      <%= hidden_field_tag "recipients", @user.id %>
      <div class="form-group">
        <%= label_tag 'Available times' %>
        <%= f.datetime_select :start %>
        <%= f.hidden_field :end, value: Time.at([:start].to_i + service.duration) %>
        <%= f.hidden_field :service_id, value: service.id %>
        <%= f.hidden_field :price, value: service.price %>
      </div>
      <%= submit_tag 'Book', class: 'btn btn-complete btn-lg btn-large btn-block' %>
    </div>
  </div>
<% end %>

我已经试过上面的方法了,但还是失败了

[:start]:数组的未定义方法“to_i”

我猜这是因为:start尚未保存,并且呈现为nil

有没有办法解决这个问题


非常感谢

[:start]只是返回一个包含符号的数组,您什么也得不到


当您获得开始时间时,您应该在控制器或模型中创建结束时间,或者在表单中键入开始时间时,使用javascript代码get end_time(获取结束时间)

[:start]只是返回一个包含符号的数组,您无法获取任何内容


当您获得开始时间时,您应该在控制器或模型中创建结束时间,或者在表单中键入开始时间时使用javascript代码get end\u time

考虑不在视图中执行业务逻辑。发送这些参数并在模型或控制器中设置结束变量

为什么你的代码不起作用?
datetime\u选择

考虑不在视图中执行业务逻辑。发送这些参数并在模型或控制器中设置结束变量

为什么你的代码不起作用?
datetime\u选择

非常感谢,这完全有道理。既然我得到了一堆select标签,你对如何在控制器中解决这个问题有什么想法吗?下面的代码显然不起作用
booking\u params[:end]=Time.at(booking\u params[:start].to\u i+Service.find(booking\u params[:Service\u id]).duration)
然后调用create
@booking=current\u user.bookings.create(booking\u params)
非常感谢,这完全有意义。既然我得到了一堆select标签,你对如何在控制器中解决这个问题有什么想法吗?以下代码显然不起作用
booking\u params[:end]=Time.at(booking\u params[:start].to\u i+Service.find(booking\u params[:Service\u id]).duration)
然后调用create
@booking=current\u user.bookings.create(booking\u params)
谢谢。关于如何在控制器中正确创建结束时间,有什么想法吗?由于上述注释中所述的原因,以下代码不起作用<代码>预订参数[:结束]=时间。在(预订参数[:开始])。到+服务。查找(预订参数[:服务id])。持续时间)
谢谢。关于如何在控制器中正确创建结束时间,有什么想法吗?由于上述注释中所述的原因,以下代码不起作用<代码>预订参数[:结束]=时间。在(预订参数[:开始])。到+服务。查找(预订参数[:服务id])。持续时间)