2016-06-14 10 views
1

追加フィルタリングを適用したいAJAXベースのデータテーブルがあります。これまでのところ、私はクライアント側または古くなった例しか見つけていません。私は検索が実際にどのように実行され、どのように機能にフィルタを追加できるのか理解できません。カスタムサーバーサイドフィルタをデータテーブルに追加する方法

単純な例では、SKUデータテーブルにベンダーフィルタを追加しようとしています。私は、ベンダー名を持つselectboxを設定しました。ベンダーが選択された場合、私はそのベンダーのSKUを表示したいだけです。さらに、ユーザーは検索を使用してこのベンダーの結果を調べることができます。結果をどのようにフィルタリングできますか?ここで

は私のCoffeeScript(UPDATE)である:

$ -> 
    $('#vendor-skus-table').DataTable 
    processing: true 
    serverSide: true 
    retrieve: true 
    pagingType: 'full_numbers' 
    ajax: data: (d) -> 
    d.sku = $('#vendor-skus-table').data('source') 
    d.extra_search = $('#vendor-select').val(); 
    return 

私のフィルタフィールドのためのいくつかの追加のjavascript:

$('#vendor-select.vendor-select').on('change', function() { 
    $('#vendor-skus-table').DataTable().ajax.reload(); 
}); 

私のDataTableファイル:

class VendorSkuDatatable < AjaxDatatablesRails::Base 
def_delegators :@view, :params, :link_to, :vendor_skus_path, :vendor_path 

def sortable_columns 
    @sortable_columns ||= ['VendorSku.name', 'Vendor.name', 'VendorSku.inventory_quantity' ] 
end 

def searchable_columns 
    @searchable_columns ||= ['VendorSku.name', 'Vendor.name'] 
end 

private 

def data 
    records.map do |record| 
    [ 
     link_to(record.name, record), 
     link_to(record.vendor.name, record.vendor), 
     record.inventory_quantity 
    ] 
    end 
end 

def get_raw_records 
    VendorSku.joins(:vendor).where(vendor_id: params[:extra_search]) 
end 
end 
+0

プラグインのドキュメントにはさまざまな言語用のサーバー側コネクタがあります – charlietfl

+0

フィルタリングプラグインhttps://datatables.net/plug-ins/filtering/は残念ながらクライアント側でのみ利用可能です:( – stoerebink

答えて

2

申し訳ありませんが、私のコードがしますJavaScript、私はCoffeScriptを知らない。

あなたdatatableを作成するときにオプションajax.dataを指定する必要があり、あなたのAJAXリクエストにパラメータを追加するために:あなたは、バックエンドでのAjaxリクエストのskuパラメータを取得します

$('#vendor-skus-table').DataTable({ 
    // ... your paramteres 
    ajax: { 
     data: function(d) { 
     d.sku = $('#vendor-skus-table').data('source'); // or maybe $('#vendor-skus-table').data('source').join(',') 
     } 
    } 

+1

ありがとうございました。私の記事をどのように修正したのかを更新します – stoerebink

関連する問題