2

テーブルデータの並べ替えと検索に jquery database rails gem を使用しています。正常に動作していますが、number_with_delimiter などの Rails ヘルパー メソッドを使用してコンマで区切られた数値を表示すると、適切な並べ替え結果が得られません。

Railsヘルパーを使用しないと、適切な結果が得られ、テーブルデータは正しくソートされます. 誰でも私を助けることができますか?

これが私のコードです:

脚本

    <script type="text/javascript" charset="utf-8">
    $(document).ready(function() {
        $('#d3').dataTable({
        "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
        "sPaginationType": "bootstrap",
         aaSorting : [[2, 'desc']],  
        });
    });
    </script>

私のパーシャルでは、テーブルデータは

    <table class="table table-striped table-bordered "  id="d3">
          <thead>      
           <tr>
             <th>Folder</th>
             <th>#Files</th>
             <th>Source Lines</th>
             <th>Contents</th>
             <th>Description</th>
           </tr>
          </thead>
          <tbody>
           <td>String data</td>
           <td>numeric data</td>
           <td>numeric data</td>
           <td>string data</td>
           <td>string data</td>


          </tbody>
       </table>   

これが私の結果です(3列目のデータ)

SourceLines

 994
 98
 974
 .
 .
 . 
 101
 1,890
 1,674
4

1 に答える 1

0

複数化ヘルパーを使用して値に「時間」を追加しているときに、この問題が発生していました。これが発生する理由は、datatables が値を数値ではなく文字列として認識し、それを 1 つとしてソートするためです。

私の解決策は、文字列として正しくソートできる実際の値の前に隠しスパンを追加することでした。非表示のスパン値は、その列の他の値と同じ長さになるように、前に十分な「0」が付いた数値です。

def datatable_numeric_sort num
    content_tag(:span, number_with_precision(num, :precision => 2).to_s.rjust(10, '0'), :style => "display:none")
end

num が 100.5 の場合、以下が生成されます。

<span style="display:none">0000100.50</span>

.to_s.rjust(10, '0') は、「長さが 10 になるまで、この文字列に '0' を追加する」と言います。任意の長さにすることができます。文字列が長くなることはないため、10 を使用しました。

私の場合、number_with_precision が必要だったのは、数値が 10 進数であり、文字列内の小数点の一貫した位置が必要だからです。

使用するには:

<td><%= datatable_numeric_sort record.value%><%= pluralize record.value, "Hour" %></td>
于 2015-11-15T01:35:24.710 に答える