2017-07-07 1 views
2

私はwill_paginateで使用する基本的なデータ型を持っています。データ型ajaxメソッドごとの並べ替え

<table id="users" class="display" data-source="<%= url_for(:controller => "/account", :action => :paginate, :format => :json) %>"> 
    <thead> 
    <tr> 
     <th>First Name</th> 
     <th>Last Name</th> 
     <th>Email</th> 
     <th>Role</th> 
    </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 

すべては主に列検索など、素晴らしい働きながらjQueryの

<script type="text/javascript"> 
    jQuery(function() { 
     return $('#users').DataTable({ 
     processing: true, 
     serverSide: true, 
     ajax: $('#users').data('source'), 
     columns : [ 
      { data: "first_name" }, 
      { data: "last_name" }, 
      { data: "username" }, 
      { data: "role" } 
     ] 
     }); 
    }); 
</script> 

で、私の役割欄には、しかし、しません。

他のすべてはSQLを使用してクエリを実行する属性ですが、ロールはメソッド呼び出しです。

def role 
    return "admin" if self.admin? 
    return "manager" if self.manager? 
    return "user" 
end 

これは列ソートでは機能しません。

これで、will_paginateとdatatablesをajaxで使用して、メソッドの出力でカスタムソートを使用する方法がありますか?私は列にdata-orderを使ってみましたが、それはそうではありません。

答えて

0

私はしばらくの間はぺージネイトを使用していましたが、使用を中止しました。 datatablesはページ区切りなしで使用してください。ページ区切りはページ内にあるためです。ここで

が1000より大きいレコードをデータテーブル、サーバー側の改ページせずにコード例

<script type="text/javascript">  
     // DO NOT REMOVE : GLOBAL FUNCTIONS! 
     $(document).ready(function() { 
       var responsiveHelper_dt_basic = undefined; 
       var responsiveHelper_dt_basic2 = undefined; 
       var breakpointDefinition = { 
        tablet : 1024, 
        phone : 480 
       }; 
       $('#users_table').dataTable({ 
        "sDom": "<'dt-toolbar'<'col-xs-12 col-sm-6'f><'col-sm-6 col-xs-12 hidden-xs'l>r>"+ 
         "t"+ 
         "<'dt-toolbar-footer'<'col-sm-6 col-xs-12 hidden-xs'i><'col-xs-12 col-sm-6'p>>", 
        "autoWidth" : true, 
        "preDrawCallback" : function() { 
         // Initialize the responsive datatables helper once. 
         if (!responsiveHelper_dt_basic) { 
          responsiveHelper_dt_basic = new ResponsiveDatatablesHelper($('#users_table'), breakpointDefinition); 
         } 
        }, 
        "rowCallback" : function(nRow) { 
         responsiveHelper_dt_basic.createExpandIcon(nRow); 
        }, 
        "drawCallback" : function(oSettings) { 
         responsiveHelper_dt_basic.respond(); 
        }, 
        "iDisplayLength": 50 
       });      
     }) 
</script> 
+0

ですけれども...応答時間を短縮するためにさまざまな方法が非常に遅い –

+0

ありさのようなバッチで検索したりすること表示する必要があるデータと計算が表示されます。レールのデータベースビューについてのこの記事をご覧くださいhttps://melsatar.blog/2017/05/27/database-views-for-rails-performance-optimization/ –

+0

問題はサーバー側ではなく、datatablesは非常にメモリを消費するクライアントです側。私は2秒未満で10,000レコードを生成することができますが、クライアントがデータ可能要素をそれに添付するために30秒以上かかるでしょう。 –

関連する問題