Jquery 如果名称包含点,如何在dataTables列初始化中获取JSON对象值?
我使用的是数据表服务器端,但无法获取JSON对象。 该表以以下方式初始化:Jquery 如果名称包含点,如何在dataTables列初始化中获取JSON对象值?,jquery,ruby-on-rails,json,datatables,Jquery,Ruby On Rails,Json,Datatables,我使用的是数据表服务器端,但无法获取JSON对象。 该表以以下方式初始化: var table = $('#index-table-company_tutors').DataTable({ buttons: buttons, serverSide: true, order: [[0, 'asc']], pageLength: 10, ajax: 'company_tutors.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\u tutors.name
endcompany.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生成得很好,但DataTable给了我以下错误:
DataTables警告:表id=index-table-company\u导师-已请求
第0行第0列的未知参数“company_tutors.name”。更多
有关此错误的信息,请参阅
我想我必须将数据保存在变量中,然后执行以下操作:
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']}
]});
但是我不知道怎么做。如果JSON属性名称中有点,则必须使用
\\
来转义这些点:
columns: [
{ data: 'company_tutors\\.name' },
{ data: 'company_tutors\\.surname' },
{ data: 'company_tutors\\.phone' },
{ data: 'company\\.name'}
]
否则dataTables会认为您引用的是嵌套对象,即{company_tutors:{name:'xyz,…}}
columns: [
{ data: 'company_tutors\\.name' },
{ data: 'company_tutors\\.surname' },
{ data: 'company_tutors\\.phone' },
{ data: 'company\\.name'}
]