jQuery Rails 应用程序中的 Tablesorter 文件大小

jQuery Tablesorter File Size in Rails App

所以我的所有列排序都没有问题,除了我的媒体列显示文件大小限制配额(GB、TB 等)我怀疑 Rails NumberHelper number_to_human_size 不是不能很好地使用 tablesorter。有人知道如何在使用 NumberHelper 的同时对其进行排序吗?

_table.html.haml

%table#myTable.tablesorter
  %thead
    %tr
      %th Name
      %th.right Per Month
      %th.right Members
      %th.right Additional
      %th.right Media
      %th.right Subscriptions

  - if @plans.any?
    %tbody
      - @plans.each do |plan|
        %tr
          %td
            = link_to admin_plan_path(plan) do
              = plan.name
          %td.right
            = "$ #{plan.base_price_in_cents / 100}"
          %td.right
            = plan.included_users
          %td.right
            = "$ #{plan.price_in_cents / 100}"
          %td.right
            = number_to_human_size(plan.media_data_quota) || '∞'.html_safe
          %td.right
            = link_to organizations_admin_plan_path(plan) do
              = plan.subscriptions.count

application.js

$(document).ready(function()
    {
        $("#myTable").tablesorter( {sortList: [[0,0], [1,0]]} );
    }
);

为了使文件大小正确排序,您需要一个解析器来将 "GB" 和 "TB" 等转换为可排序的数字。

有一个 metric parser available on my fork of tablesorter - demo 可以转换公制和二进制值以进行排序。

要使用它,加载解析器文件,然后添加 sorter-metricdata-metric-name 属性:

<th class="sorter-metric" data-metric-name="b|byte">Media</th>

我还没有测试过,但如果你使用的是原始的 tablesorter,这个解析器应该仍然可以工作。如果是这种情况,排序器 class 名称将不起作用,因此您需要设置 headers 选项:

headers: {
    0 : { sorter: 'metric' }
}