【问题标题】:NameError - uninitialized constant AjaxDatatablesRails::Datatable::Column::SearchNameError - 未初始化的常量 AjaxDatatablesRails::Datatable::Column::Search
【发布时间】: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


    【解决方案1】:

    我想出了一个解决办法。我需要从 gem 的最新版本 1.2.0 降级到 1.1.0

    宝石文件

    gem 'ajax-datatables-rails', '1.1.0'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 2016-06-12
      相关资源
      最近更新 更多