我想用ajax-datatables-rails gem实现rails服务器端数据表。当我想查看表格时,出现未定义的方法搜索错误。这是我的代码ajax-datatables-rails undefined方法搜索
class ContractorDatatable < AjaxDatatablesRails::Base
def view_columns
# Declare strings in this format: ModelName.column_name
# or in aliased_join_table.column_name format
@view_columns ||= {
id: { source: "Contractor.id", cond: :eq },
name: { source: "Contractor.name" },
city: { source: "Contractor.city" },
ico: { source: "Contractor.ico" },
country: { source: "Contractor.country" }
}
end
def data
records.map do |contractor|
{
# example:
id: contractor.id,
name: contractor.name,
city: contractor.city,
ico: contractor.ico,
country: contractor.country
}
end
end
private
def contractors
@contractors ||= fetch_records
end
def get_raw_records
Contractor.all
end
def get_raw_record_count
search_records(get_raw_records).count
end
end
在我的控制,我把它变成指数
class ContractorsController < ApplicationController
before_action :authenticate_user!, :except => [:showcontractor,:listcontractors,:index]
before_action :set_contractor, only: [:show, :edit, :update, :destroy]
respond_to :html, :json
# GET /contractors
# GET /contractors.json
def index
@contractors = Contractor.all
respond_to do |format|
format.html
format.json do
render json: ::ContractorDatatable.new(view_context)
end
end
end
和JavaScript是简单的呼叫从阿贾克斯此JSON。但是在控制台中,我发现获取JSON请求会返回0条记录和未定义的方法搜索错误。
NoMethodError(未定义的方法'搜索”的 ‘Contractor.name’:字符串):
我有一个数据表和PHP服务器端的经验,但我有点失去了它是如何工作的轨道。 THX
编辑: JavaScript代码
var tableconready = function() {
$('#admindodavatelia').DataTable({
'order': [0, 'asc'],
'serverSide': true,
'ajax' : '/contractors.json',
'language': {
'url': '/datatables_slovak.json'
}
});
};
$(".contractors.index").ready(tableconready);
$(".contractors.index").on('turbolinks:load', tableconready);
EDIT2: 我打扫ContractorDatatable代码把它像教程,但我得到
(1.4ms之)SELECT COUNT()FROM“contractors”(2.0ms)SELECT COUNT()FROM(SELECT“contractors”。* FROM“contractors”)AS foo 已完成500内部服务器E RROR在8ms的(ActiveRecord的:3.5ms)
NoMethodError(未定义的方法
[]' for nil:NilClass):
数据 '
app/datatables/contractor_datatable.rb:20:in
应用程序/控制器/ contractors_controller.rb:13:block (2 levels) in index' app/controllers/contractors_controller.rb:10:in
索引'
和您的JavaScript代码?你是谁请求数据表? – inye
添加了javascript代码。您是指您请求的是谁? –
谁生成你请求数据表的URL – inye