使用Rails中的DataTable对格式化的日期列进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Rails中的DataTable对格式化的日期列进行排序相关的知识,希望对你有一定的参考价值。

如何按人类可读日期对DataTable进行排序?

一个常见问题是您希望用户看到的格式化日期未正确排序。

enter image description here

答案

假设第一列是可排序的ISO日期,第二列是人类可读的格式化日期:

  %table.structures-list.stripe
    %thead
      %tr
        -# The ISO date column is for sorting
        %th Sortable
        %th Created
        %th Structure
        %th Area
    %tbody
      - items.each do |item|
        %tr.item{ id: dom_id(item.id) }
          -# The ISO date column is for sorting
          %td= item.created_at.iso8601
          %td= item.created_at.strftime("%d-%b-%Y")
          %td.ranked-name
            %a= link_to item.name, [item.preplan, item]
          %td= presenter.area

enter image description here

您可以在(haml)视图文件中按如下方式初始化DataTable:

:javascript
  $('.structures-list').DataTable({
    "order": [[ 0, "desc" ]],
    "pageLength": 25,
    // Have the created at column sorted by the ISO version
    "columnDefs": [
          { "targets": [1],
            "visible": true,
            "orderData": [0]
          },
          { "targets": [0],
            "visible": false
          }
    ]
  });

当您单击第二列上的排序箭头时,这将按第一列排序,并隐藏第一列。

enter image description here

(这是为了我未来的自我。)

以上是关于使用Rails中的DataTable对格式化的日期列进行排序的主要内容,如果未能解决你的问题,请参考以下文章

ActiveRecord / Rails 3 中的日期格式

更改 Rails 4 中的默认日期和时间格式

Datatable 正在从我为 Windows 10 构建的 VB.NET 应用程序中的 SQL 查询结果中接收 (01\dd\yyyy) 格式的日期

将标准 rails / ruby​​ 时间转换为美国格式 - 日期混淆

编辑列日期格式后不显示过滤日期 - Laravel Yajra Datatable

DataTable中的数据筛选