2016-05-18 20 views
2

ajax-datatables-railsの宝石を見つけようとしています。hereは運がありません。私のテーブルが表示され、正しいデータが(最初のページのために)ありますが、ページの検索、並べ替え、または変更を試みると、テーブルのデータは更新されません。Rails 4 + Datatables:Ajax-datatables-rails gemはテーブルを更新しません

シンプルなものがありますか?

ビュー

<table id="users-table" data-source="<%= users_path(format: :json) %>"> 
    <thead> 
    <tr> 
     <th>ID</th> 
     <th>Name</th> 
     <th>Email</th> 
     <th>Admin?</th> 
     <th>Employee?</th> 
     <th>Client?</th> 
    </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 

def index 
    respond_to do |format| 
     format.html 
    format.json { render json: UserDatatable.new(view_context) } 
    end 
end 

のDataTableコントローラ

class UserDatatable < AjaxDatatablesRails::Base 
    # uncomment the appropriate paginator module, 
    # depending on gems available in your project. 
    # include AjaxDatatablesRails::Extensions::Kaminari 
    include AjaxDatatablesRails::Extensions::WillPaginate 
    # include AjaxDatatablesRails::Extensions::SimplePaginator 

    def sortable_columns 
    # list columns inside the Array in string dot notation. 
    # Example: 'users.email' 
     @sortable_columns ||= [ 
      'users.id', 
      'users.name', 
      'users.email', 
      'users.admin', 
      'users.employee', 
      'users.is_client' 
     ] 
    end 

    def searchable_columns 
    # list columns inside the Array in string dot notation. 
    # Example: 'users.email' 
     @searchable_columns ||= [ 
      'users.id', 
      'users.name', 
      'users.email', 
      'users.admin', 
      'users.employee', 
      'users.is_client' 
     ] 
    end 

    private 

    def data 
    records.map do |record| 
     [ 
     # comma separated list of the values for each cell of a table row 
     # example: record.attribute, 
       record.id, 
       record.name, 
       record.email, 
       record.admin, 
       record.employee, 
       record.is_client 
     ] 
    end 
    end 

    def get_raw_records 
    # insert query here 
     User.all 
    end 

    # ==== Insert 'presenter'-like methods below if necessary 
end 

のJS

$('#users-table').dataTable({ 
    "processing": true, 
    "serverSide": true, 
    "ajax": $('#users-table').data('source') 
    "pagingType": "full_numbers" 
    // optional, if you want full pagination controls. 
    // Check dataTables documentation to learn more about 
    // available options. 
}); 
+0

DOMReadyコールバックの '$( '#users-table').DataTable()'コールはありますか? – Uzbekjon

+0

はい、他の関数がうまく呼び出されています。チャートがロードされ、更新はされず、ajaxリクエストはすべて同じように見えます –

答えて

0

は、あなたが検索したり、ソートし、あなたのAJAXオプションで指定されたURLを経由してパラメータのセットを渡すときのDataTableにAJAX要求を行うことを意味します有効にサーバー側の処理を持っています。

実際の処理はサーバー上で実行する必要があり、レスポンスはdatatablesで指定されたプロトコルに準拠している必要があります。ドキュメントを参照することができますhere

+0

私はそれを理解していますが、この宝石は私が言うことができる限り、それらのAjaxリクエストを行うのに役立つはずです... –

+0

ああ、宝石を使って –

0

UserDatatableクラスのすべての列に対して 'users.id'の代わりに 'user.id'を使用してみてください。私はこの宝石の文書に示されているように私のテーブルの典型的な複数の命名規則を受け入れない私のためにこれをしなければならなかった。

+0

'users_path {format :: json}'を呼び出すことでそれが問題かどうかを確認することができます。例えば。 users_pathが '/ users'の場合、' localhost:3000/users.json'を呼び出すとjson形式のデータテーブルが表示されます。それが問題である 'UserDatatable'だと私は疑うことを示しています。 – jQwierdy

関連する問題