我一直在寻找解决这个问题的解决方案。在stackoverflow上有很多建议,我尝试了所有,但是我的情况都没有,我不知道为什么。
我在我的服务器上运行了当前版本的RoR [4.1.5]并且我有一个表单,用户必须在其中选择"时间来自"和#34;时间到"值。
<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
中的变量,它们具有正确的值,类似于&#34; 14:00&#34;和&#34; 15:00&#34;。但正如我所说,它没有做任何事情。
我还尝试使用:default => {hours: '14', minutes: '00'}
等分别处理小时和分钟,但这也不起作用,甚至不会导致错误。根本不值一提。它仍然默认为实际时间。
有人对我有推荐或暗示吗?
答案 0 :(得分:6)
time_select中的默认值(对于那些没有关注评论主题的人)的工作方式如下:
<%= time_select :name, 'method', {options}, {:default => {:hour => '10', :minute => '30'}} %>
如果我们想要时间选择默认为10:30。
答案 1 :(得分:2)
f.time_select :start, default: Time.current.change(hour: 9, min: 0)
或
f.time_select :start, default: {hour: 9, min: 0}