使用datetime_select

时间:2017-03-22 15:43:31

标签: ruby-on-rails ruby forms ruby-on-rails-5

我试图建立一个人们可以预订服务的预订表格。在服务模型中有一个持续时间设置,我想使用它来自动填充end_time。例如,如果我在2017-03-22 1PM预订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 %>

我已尝试过以上但是

  

未定义的方法`to_i&#39; for [:start]:Array

我猜是因为:start尚未保存并呈现为nil。

关于如何解决这个问题的任何想法?

非常感谢

2 个答案:

答案 0 :(得分:0)

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

当你获得start_time时,你应该在控制器或模型中创建end_time,或者在表单中键入start_time时使用javascript代码获取end_time的其他方式

答案 1 :(得分:0)

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

为什么你的代码不起作用? datetime_select returns a set of select tags (one for year, month, day, hour, and minute).