2016-05-18 59 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

你必須啓用服務器端處理,這意味着數據表將當您搜索或排序,並通過您在阿賈克斯選項中指定的URL傳遞一組參數的Ajax請求。

實際處理必須在服務器上完成,並且響應必須符合數據表指定的協議。您可以參考文檔here

+0

我明白,但是這個寶石應該有助於使這些ajax請求,據我所知... –

+0

啊對不起,沒有看到你是使用寶石。 –

0

嘗試在您的UserDatatable類中爲所有列使用單數'user.id'而不是'users.id'。我不得不這樣做我的表不會接受我的表的典型複數命名約定,如該寶石的文檔中所示。

+0

您應該可以通過調用'users_path {format :: json}'來查看是否有問題。例如。如果users_path是'/ users',那麼調用'localhost:3000/users.json'應該會顯示一個json格式的數據表。如果這表明我懷疑這是'UserDatatable'這個問題。 – jQwierdy