我在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/