我想用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