带有Rails的jQuery Datepicker 4

我正在使用jQuery Datepicker gem,当我正在编辑一个有日期的记录时,它会出现意外行为。

当我创建新记录时,以mm / dd / yy格式输入日期。 当我去编辑记录时,日期字段正在yyyy-dd-mm格式的日期字段中填充,我不明白为什么。 也许这与Rails本身有关?

表中的Date列设置为Date,我认为这很好。 在控制器中显示日期或某些内容时,我的视图中是否需要执行某些操作?

这是我的application.js文件中的内容:

$(document).on('page:change', function () { $('#cust_dob').datepicker({ changeMonth: true, changeYear: true, dateFormat: "mm/dd/yy", yearRange: "1900:+0" }); }); 

任何帮助将非常感激。

好的,我能够让这个工作。 有两个问题。 首先,由于格式不同,日期并不总是保存到数据库表中。 所以,我使用了隐藏字段并使用了数据贴纸的altFormat和altField选项。 第二个问题是在编辑记录时格式化当前日期。 这是使用strftime建议的DevDue实现的。 所以,对于那些感兴趣的人,我认为是我的。 不是说这是最好的方式,因为我还在学习RoR,但它有效:)

所以,我对日期的部分看法:

 
<% dob_display = :dob %> <%= f.text_field dob_display, placeholder: "mm/dd/yyyy", required: true, id: "cust_dob", value: @customer.dob.try(:strftime, "%m/%d/%Y") %> <%= f.hidden_field :dob, id: "cust_dobalt" %>

我花了一段时间才意识到,除非hidden_​​field位于visble字段之后,否则它不起作用!

我的datepicker的application.js文件如下所示。 注意altField和altFormat:

 $(document).on('page:change', function () { $('#cust_dob').datepicker({ changeMonth: true, changeYear: true, dateFormat: "mm/dd/yy", yearRange: "1900:+0", altField: "#cust_dobalt", altFormat: "yy-mm-dd", duration: "slow" }); }); 

免责声明,我现在只有一年的轨道开发,没有正式的培训。 也就是说,这是我在自己的应用程序中工作的方式。

  1. 设置日期选择器以格式化我们希望它在表单中显示的日期,即%m/%d/%y
  2. 在我们将它保存到数据库之前,我们使用strptime将它从字符串转换回Date对象,以便控制器知道如何处理它。
    • 如果您不知道差异(直到我想到这一点我没有), strftime允许您从日期对象创建一个字符串,而strptime允许您执行相反的操作,将字符串转换为Date对象。
  3. 我们将它添加回我们正在创建/更新的参数中,它应该可以正常工作。

表单视图

 <%= f.text_field dob_display, value: @customer.dob.strftime("%m/%d/%Y")%>, id: 'cust_dob' 

jQuery的

 $('.cust_dob').datepicker({format: 'mm/dd/yyyy'}); 

调节器

 filtered_params = user_params filtered_params[:dob] = Date.strptime(filtered_params[:dob], '%m/%d/%Y') @user = User.new(filtered_params) 

希望这适合你! 我也使用bootstrap-datetimepicker插件做了同样的事情,它对我来说很好。

您可以更改datepicker的格式

 // setter $( ".selector" ).datepicker( "option", "dateFormat", "mm/dd/yy" ); 

从:

http://api.jqueryui.com/datepicker/#option-dateFormat

并在出路时更改日期格式:

 t.strftime("Printed on %m/%d/%Y") #=> "Printed on 11/19/2007" 

http://apidock.com/ruby/DateTime/strftime

祝好运

遵循nickcamillo提供的解决方案。 在此列出我的实现,专门用于显示coffeescript中的日期格式配置,因为许多人似乎遇到了正确配置它的问题。

coffeescript中的格式配置本身是不够的。 我还必须将传入的effective_from_date参数值显式转换为我想要的格式。 或者我想我可以在应用程序范围内设置默认日期格式,如在Rails 4中更改默认日期和时间格式中所述

CoffeeScript的:

 ready = -> $('.activate-datepicker').datepicker format: 'mm/dd/yyyy' $(document).ready(ready) $(document).on('page:load', ready) 

控制器:

 param[:effective_from_date] = Date.strptime(params[:effective_from_date], '%m/%d/%Y')