2017-06-16 55 views
1

我使用的數據表服務器端,但我不能讓JSON對象。 該表的初始化過程是這樣:如何獲得JSON數據表中的列初始化對象的值,如果其名稱中包含點?

var table = $('#index-table-company_tutors').DataTable({ 
      buttons: buttons, 
      serverSide: true, 
      order: [[0, 'asc']], 
      pageLength: 10, 
      ajax: 'company_tutors.json', 
      columns: [ 
      { data: 'company_tutors.name' }, 
      { data: 'company_tutors.surname' }, 
      { data: 'company_tutors.phone' }, 
      { data: 'company.name'} 
      ]}); 

我使用Rails,所以在指數控制器我得到的列名,然後我在數據庫中選擇它,但在這種情況下,我需要連接兩個這些屬性具有相同的名稱。出於這個原因,我需要使用company_tutors.name年底company.name

format.json do 
     # search[value]: 

     # default 10 massimo 50 
     limit = [(params[:length] || '10').to_i, 50].min 
     # default 0 
     offset = params[:start].to_i 
     # always include :id column 
     columns = (params[:columns] 
     .reject { |_, value| value[:data] == '' } # workaround exclude empty column (last one) 
     .map { |_, value| value[:data].to_sym } << :id).uniq 
     # 
     order = (params[:order].map do |_, spec| 
      # default :id 
      column = spec[:column] ? columns[spec[:column].to_i] : :id 
      # default :asc 
      dir = spec[:dir] == 'desc' ? :desc : :asc 
      [column, dir].join(' ') 
     end) 
     page = if params[:search][:value].blank? 
       @company_tutors.joins(:farm) 
           .limit(limit).offset(offset) 
           .order(order) 
       else 
       @company_tutors.joins(:farm) 
           .search(params[:search][:value]) 
           .limit(limit).offset(offset) 
           .order(order) 
       end 
     @data = page.pluck(*columns).map { |x| Hash[columns.zip(x)] } 
     end 

這是生成的JSON的例子:

{"data":[{"company_tutors.name":"Name_test","company_tutors.surname":"Surname_test","company_tutors.phone":"335-7744391","company.name":"Company name","id":18}]} 

的JSON很好地產生,但數據表給我這個錯誤:

DataTables warning: table id=index-table-company_tutors - Requested unknown parameter 'company_tutors.name' for row 0, column 0. For more information about this error, please see http://datatables.net/tn/4

我想,我必須將數據保存在一個變量,不是做這樣的事情:

var table = $('#index-table-company_tutors').DataTable({ 
       buttons: buttons, 
       serverSide: true, 
       order: [[0, 'asc']], 
       pageLength: 10, 
       ajax: 'company_tutors.json', 
       columns: [ 
       { data: mydata['company_tutors.name'] }, 
       { data: mydata['company_tutors.surname'] }, 
       { data: mydata['company_tutors.phone'] }, 
       { data: mydata['company.name']} 
       ]}); 

但我不知道該怎麼做。

回答

1

如果你在你的JSON屬性名點,你必須使用\\逃脫點:

columns: [ 
    { data: 'company_tutors\\.name' }, 
    { data: 'company_tutors\\.surname' }, 
    { data: 'company_tutors\\.phone' }, 
    { data: 'company\\.name'} 
] 

否則數據表會相信你是指的一個嵌套的對象,即{ company_tutors: { name: 'xyz, ... }}

相關問題