活动管理日期筛选日期格式自定义

时间:2012-09-13 11:29:08

标签: ruby-on-rails ruby date activeadmin

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

4 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:1)

我修复的方式是这样的:

$ ->
  # 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

答案 2 :(得分:0)

是的,有。我使用js

设置datetime选择器对象的选项
$(document).ready(function() {
  $(".datepicker").datepicker( "option", "dateFormat", 'D, d M yy' );

});

如果这样做,输入值将类似于

Wed, 28 Nov 2012

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

答案 3 :(得分:0)

适用于Active Admin过滤器..

在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'});

});