我在Rails 4应用程序中对DataTables使用服务器端处理。我的ajax源从数据库返回了准确的数据记录。分页在html一侧进行,即第1页显示800个条目中的1-10个,第2页显示800个条目中的11-20个,依此类推。但是,表中的实际记录是相同的10个结果。我不知道它是否只是为每页用相同的10条记录重绘表,因为我错过了什么。

有谁知道为什么我为每页返回相同的10条记录?非常感谢任何见解。提前致谢。

gem 文件:

gem 'will_paginate'
gem 'jquery-datatables-rails', github: 'rweng/jquery-datatables-rails'

Controller :
def index
  respond_to do |format|
    format.html
    format.json { render json: HomeownersDatatable.new(view_context) }
  end
end

房主数据表:
class HomeownersDatatable
delegate :params, :link_to, to: :@view

def initialize(view)
    @view = view
end

def as_json(options = {})
    {
        sEcho: params[:sEcho].to_i,
        iTotalRecords: Homeowner.count,
        iTotalDisplayRecords: homeowners.total_entries,
        aaData: data,
    }
end

private
def data
    homeowners.map do |homeowner|
        [
            link_to(homeowner.name, @view.edit_admin_homeowner_path(homeowner.id)),
            # (homeowner.name),
            (homeowner.id),
            (homeowner.email),
            (homeowner.address),
            (homeowner.zip_code),
        ]
    end
end

def homeowners
    @homeowners ||= fetch_homeowners
end

def fetch_homeowners
    homeowners = Homeowner.order("#{sort_column} " "#{sort_direction}")
    homeowners = homeowners.page(page).per_page(per_page)
    if params[:sSearch].present?
        homeowners = homeowners.where("name like :search or email like :search", search: "%#{params[:sSearch]}%")
    end
    homeowners
end

def page
    params[:iDisplayStart].to_i/per_page + 1
end

def per_page
    params[:iDisplayLength].to_i > 0 ? params[:iDisplayLength].to_i : 20
end

def sort_column
    columns = %w[id email]
    columns[params[:iSortCol_0].to_i]
end

def sort_direction
    params[:sSortDir_0] == "DESC" ? "DESC" : "ASC"
end

结尾

JS初始化表:
$(document).ready(function() {
  $('#homeowners_admin_table').DataTable({
    "pagingType": "full_numbers",
    "stateSave": true,
    "processing": true,
    "serverSide": true,
    "ajax": $('#homeowners_admin_table').data('source'),
  });
});

最佳答案

我有同样的问题。我通过更改找出了答案:

$('#table').DataTable({{...})

为了:
$('#table').dataTable({{...}).

它只是关于数据表的版本。

关于jquery - Rails 中的服务器端数据表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28993675/

10-12 12:40
查看更多