2

几个小时以来,我一直在寻找解决这个问题的方法。即使在stackoverflow上也有很多建议,我尝试了所有建议,但在我的情况下没有一个有效,我不知道为什么。

我有当前版本的 RoR [4.1.5] 在我的服务器上运行,并且我有一个表单,用户必须在其中选择“时间开始”和“时间结束”值。

<p>
<%= f.label :Time %><br>
<%= f.time_select :timefrom, {minute_step: 60} %> to <%= f.time_select :timeto, {minute_step: 60} %>
</p>

我从数据库中获取默认值。为了获取它们,我只收集最后输入的时间值。通常是 1 小时的时间范围:

<% changetimeto = (Production.select("timeto").last.timeto).strftime("%H:%M")   %>
<% changetimefrom = (Production.select("timeto").last.timeto + 3600).strftime("%H:%M")  %>

所以我尝试了:

<%= f.time_select :timefrom, {minute_step: 60}, :selected => changetimeto %> to <%= f.time_select :timeto, {minute_step: 60}, :selected => changetimefrom %>

:value =>:default =>

但似乎没有任何效果,它甚至没有给我一个错误。我检查了变量,changetimeto它们changetimefor具有正确的值,例如“14:00”和“15:00”。但正如我所说,它没有任何作用。

我还尝试使用 等分别处理小时和分钟:default => {hours: '14', minutes: '00'},但这也不起作用,甚至不会导致错误。根本不值一提。它仍然默认为实际时间。

有人对我有建议或提示吗?

4

2 回答 2

6

time_select 中的默认值(对于那些没有关注评论线程的人)的工作方式如下:

<%= time_select :name, 'method', {options}, {:default => {:hour => '10', :minute => '30'}} %>

如果我们希望时间选择默认为 10:30。

于 2014-08-26T19:51:30.010 回答
2
f.time_select :start, default: Time.current.change(hour: 9, min: 0)

或者

f.time_select :start, default: {hour: 9, min: 0}

参考:https ://github.com/rails/rails/blob/94b5cd3a20edadd6f6b8cf0bdf1a4d4919df86cb/actionview/lib/action_view/helpers/tags/date_select.rb#L44

于 2018-12-15T13:57:59.907 回答