【发布时间】:2020-11-19 17:00:40
【问题描述】:
我正在尝试使用 ajax-datatables-rails gem 设置服务器端数据表。我或多或少地遵循了指南,只是做了一些小的改动。我不知道为什么我会遇到这个错误。导航到索引页面时,我通过 AJAX 请求收到 500 错误:
NameError - uninitialized constant AjaxDatatablesRails::Datatable::Column::Search
任何帮助将不胜感激!
Ruby 2.5.1
Rails 5.2.4.3
PostgreSQL 10.3
ajax-datatables-rails 1.2.0
config/initializers/ajax_datatables_rails.rb
# frozen_string_literal: true
AjaxDatatablesRails.configure do |config|
config.db_adapter = :pg
end
app/assets/javascripts/datatables.js
$(document).on("turbolinks:load", function() {
$('#users-datatable').dataTable({
"processing": true,
"serverSide": true,
"ajax": {
"url": $('#users-datatable').data('source')
},
"pagingType": "full_numbers",
"columns": [
{"data": "first_name"},
{"data": "last_name"},
{"data": "email"}
]
});
});
app/datatables/user_datatable.rb
class UserDatatable < AjaxDatatablesRails::ActiveRecord
def initialize(params, opts = {})
@view = opts[:view_context]
super
end
def view_columns
@view_columns ||= {
first_name: { source: "User.first_name" },
last_name: { source: "User.last_name" },
email: { source: "User.email" }
}
end
def data
records.map do |record|
{
first_name: record.first_name,
last_name: record.last_name,
email: record.email
}
end
end
def get_raw_records
User.all
end
end
config/routes.rb
Rails.application.routes.draw do
resources :users, only: :index do
get "search", to: "users#search", on: :collection
end
end
app/controllers/users_controller.rb
class UsersController < ApplicationController
# GET /users
def index; end
# GET /users/search
def search
render json: UserDatatable.new(params)
end
end
app/views/users/index.html.erb
<table id="users-datatable" class="table" data-source="<%= search_users_path(format: :json) %>">
<thead class="table-header">
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
</tr>
<tr class="search-boxes">
<th>First Name</th>
<th>Last Name</th>
<th>Email</th>
</tr>
</thead>
<tbody class="table-body"></tbody>
</table>
【问题讨论】:
标签: ruby-on-rails ajax postgresql datatables