活动管理员日期过滤日期格式自定义

有没有简单的方法可以从默认的ISO格式(yyyy-mm-dd)更改ActiveAdmin日期filter显示格式?

而不是覆盖js,你可以为datepicker提供额外的选项,如下所示:

= f.input :my_date, as: :datepicker, datepicker_options: { dateFormat: "mm/dd/yy" } 

我修复的方式是这样的:

 $ -> # reset format $('.datepicker:not(.hasDatepicker)').each -> if $(@).val().length > 0 p = $(@).val().split('-') $(@).val("#{p[2]}-#{p[1]}-#{p[0]}") # change format $(document).on 'focus', '.datepicker:not(.hasDatepicker)', -> $(@).datepicker dateFormat: 'dd-mm-yy' 

因此,首先将值从yyyy-mm-dd重置为yyyy-mm-dd,而不是在拾取器上设置正确的格式。

希望这有助于某人。

这适用于ActiveAdmin pre 1和just_datetime_picker gem

就在这里。 我用js设置datetime选择器对象的选项

 $(document).ready(function() { $(".datepicker").datepicker( "option", "dateFormat", 'D, d M yy' ); }); 

如果你这样做,输入值将是如下

 Wed, 28 Nov 2012 

http://docs.jquery.com/UI/Datepicker/formatDate这里是关于支持的格式的手册

对于Active Adminfilter..

在Active Admin gem中,文件:app / assets / javascripts / active_admin / pages / application.js.coffee,您将看到:

 $ -> $(document).on 'focus', '.datepicker:not(.hasDatepicker)', -> $(@).datepicker dateFormat: 'yy-mm-dd' 

您可能必须修改焦点事件,例如(file:app / assets / javascripts / active_admin.js)。

 $(document).ready(function(){ $(document).on('focus', '.datepicker.hasDatepicker', function() { $(this).datepicker( "option", "dateFormat", "mm-dd-yy"); }); }); 

或者可能删除事件并重新初始化datepickers,例如:

 $(document).ready(function(){ // remove existing on focus events $._data( $(document)[0], 'events').focusin = null; // add new datepicker with format $('.datepicker').datepicker({dateFormat: 'mm-dd-yy'}); });