我试图建立一个人们可以预订服务的预订表格。在服务模型中有一个持续时间设置,我想使用它来自动填充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。
关于如何解决这个问题的任何想法?
非常感谢
答案 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).