繁体   English   中英

Rails Date Picker Datetime的有效格式

[英]Rails Date Picker Valid Format for datetime

我的表中有两列,即start_date和end_date,这两列的类型均为datetime。 我试图将text_field与jQuery gem bootstrap-datepicker-rails一起使用,以使用户从一个小的弹出日历中选择日期。 问题在于,返回的日期不是Ruby期望的格式,因此您最终会得到无效的日期,这些日期违反了模型验证。 例如,选择10/7/2015(即2015年10月7日)作为开始日期,并选择10/30/2015(2015年10月30日)会返回两个错误:1)结束日期不能为空,2)开始日期必须为在之前。

我认为这是因为它实际上是在以不同的格式解释第二个日期,并且由于一年中显然没有第30个月,因此它无法解析日期。 我可以通过启动Rails控制台并尝试手动输入日期来检验该假设。 例如, project = Project.new(number: 7, account_manager: "Test", customer: "Test", start_date: "10/7/2015".to_datetime, end_date: "10/30/2015")返回以下内容: => #<Project number: 7, name: nil, customer: "Test", created_at: nil, updated_at: nil, start_date: "2015-07-10 00:00:00", end_date: nil, account_manager: "Test"> 请注意,end_date字段为nil。

我想我看到了问题的症结所在,但我正在努力使其解决问题。 我可以看到,Rails某种程度上需要将输入为10/30/2015的日期解释为2015年10月30日,然后将其转换为适当的格式,然后再将记录保存到数据库中。 谁能帮助我克服这个绊脚石?

这是项目模型。 类Project <ActiveRecord :: Base验证:start_date,状态:true验证:end_date,状态:true验证:start_date,日期:{之前::end_date}验证:customer,状态:true验证:number,状态:true end

这是项目/新视图。

<h1>Create New Project</h1>

<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_for(@project) do |f| %>
      <%= render 'shared/error_messages' %>

      <%= f.label :number, 'Project Number' %>
      <%= f.text_field :number, class: "form-control" %>

      <%= f.label :account_manager %>
      <%= f.text_field :account_manager, class: "form-control" %>

      <%= f.label :customer %>
      <%= f.text_field :customer, class: "form-control" %>

      <%= f.text_field :start_date, class:"datepicker", :value=>      (@project.start_date && @project.start_date.strftime("%m-%d-%Y")), placeholder:"Start Date" %>

      <%= f.text_field :end_date, class:"datepicker", :value => (@project.end_date && @project.end_date.strftime("%m-%d-%Y")), placeholder:"End Date" %>

      <br>
      <%= f.submit "Create project", class: "btn btn-primary" %>
    <% end %>
  </div>
</div>

<script type="text/javascript">
  $(document).ready(function(){
    $('.datepicker').datepicker({todayHighlight: true, orientation: 'auto top'});
  });
</script>

最后,我知道已经有一些关于此的问题(例如, “ Rails 3.1 text_field form helper和jQuery datepicker日期格式” ),但是由于我自己的经验不足或更改,我很难获得答案在Rails框架中,因为回答了一些较早的问题。

尝试将日期选择器切换为使用yyyy-mm-dd格式:

http://bootstrap-datepicker.readthedocs.org/en/latest/options.html#format

例:

$(document).ready(function(){
  $('.datepicker').datepicker({
    todayHighlight: true, 
    orientation: 'auto top', 
    format: 'yyyy-mm-dd'
  });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM