强制表单中的日期时间为小时(已关闭)

时间:2014-06-30 13:37:15

标签: ruby-on-rails ruby forms

<<我手动创建了我需要的HTML表单并且它们成功运行,因此您可以忽略此>>

我创建了一个要求用户提交日期时间变量的表单。因为它是用于安排课程,所以必须在一小时(下午1:00,凌晨3:00,中午12:00等)。为了使系统万无一失,我隐藏了除小时之外的所有字段,并添加了一个虚拟分钟下拉菜单,只允许他们选择“0分钟”选项。

但是我已经尝试了几种方法来强制分钟在一小时(begin_of_day,beginning_of_hour,at_midday等和.change,如下所示),但不管默认日期是什么时候仍然是当前时间。

<script language="javascript"> 
function toggle(eID) {
 var ele = document.getElementById(eID);
 if(ele.style.display == "block") {
      ele.style.display = "none";
   }
 else {
  ele.style.display = "block";
  text.innerHTML = "hide";
 }
} 
</script>

<%= month_calendar events: @lessons, previous_link: events_ajax_previous_link, next_link: events_ajax_next_link do |date, events| %>
  <% @formatteddate = date.strftime('%Y-%m-%d') %>
  <button type="button" class="btn btn-default" 
  onclick="toggle('<%= @formatteddate.to_s%>');return false;">
    <%= date.strftime("#{date.day.ordinalize}") %>
</button></br>

<span id='<%= @formatteddate.to_s%>' class="lesson-submit">
  Add New Lesson Slot (Perth time is used)
  <%= form_for(Lesson.new) do |f| %>
  <div class="field">
    <%= f.label :starts_at %><br>
    <%= f.datetime_select :starts_at, :value => date.at_midday, :discard_year => true, :discard_day => true, :discard_month => true %>
    <select><option value="00">00</option></select>
  </div>

  <div class="field">
    <%= f.hidden_field :teacher_id, :value => current_user.id %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
</span>
<% end %>

你能说出为什么没有像我喜欢的那样操纵默认时间,这是(通常)强制用户只选择一小时的合适方式吗?

干杯!

1 个答案:

答案 0 :(得分:0)

您可以使用select_hour助手吗? http://apidock.com/rails/v4.0.2/ActionView/Helpers/DateHelper/select_hour 然后在控制器中,使用结果创建一个DateTime以保存到数据库。