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

时间:2015-05-29 17:53:45

标签: javascript jquery ruby-on-rails haml tablesorter

所以我的所有列都排序没有问题,除了我的Media列显示文件大小限制(GB,TB等)的配额我怀疑Rails NumberHelper number_to_human_size与tablesorter不能很好地配合。任何人都知道如何使用NumberHelper进行排序?

enter image description here

_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]]} );
    }
);

1 个答案:

答案 0 :(得分:1)

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

我的metric parser - fork of tablesorter上有一个demo可转换指标&二进制值使排序工作。

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

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

我还没有测试过它,但是如果你使用的是原始的tablesorter,那么这个解析器应该仍然有效。如果是这种情况,分拣机类名称将不起作用,因此您需要设置headers选项:

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