我正在尝试在 Rails 4.2 上集成ajax-datatables-rails
增强表来显示内容列表。虽然我已经能够使基本搜索功能起作用,但似乎有problem with the pagination
。无论通过iDisplayStart
传递的值如何,查询中的偏移量始终为0。我看到'limit'的值是通过iDisplayLength
传递的,而且工作正常。
我不知道我错过了什么。我花了最近几天试图解决这个问题,所以任何其他方式的帮助或建议将得到高度赞赏。
Gemfile:
gem 'jquery-datatables-rails'
gem 'ajax-datatables-rails'
gem 'kaminari'
查看
<table id="users-table", data-source="<%= students_path(format: :json) %>">
<thead>
<tr>
<th>Reg No</th>
<th>Name</th>
<th>Email Address</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
控制器
def index
respond_to do |format|
format.html
format.json { render json: StudentDatatable.new(view_context) }
end
end
student_database.rb
include AjaxDatatablesRails::Extensions::Kaminari
class StudentDatatable < AjaxDatatablesRails::Base
def sortable_columns
# Declare strings in this format: ModelName.column_name
@sortable_columns ||= ['student.regno','student.first_name','student.email']
end
def searchable_columns
# Declare strings in this format: ModelName.column_name
@searchable_columns ||= ['student.regno','student.first_name','student.email']
end
def data
records.map do |record|
[
# comma separated list of the values for each cell of a table row
# example: record.attribute,
record.regno,
record.first_name,
record.email
]
end
end
private
def get_raw_records
query_result
end
# ==== Insert 'presenter'-like methods below if necessary
def query_result
if params[:sSearch].blank?
Student.all
else
wild_card_search = "%#{params[:sSearch]}%"
Student.where("first_name like ?",wild_card_search).offset(params[:iDisplayStart]).limit(params[:iDisplayLength])
end
end
end
屏幕截图:
如上面的屏幕截图所示,即使我想在第二页上,列表仍然是第一页。
答案 0 :(得分:2)
我遇到了同样的问题所以我改为原来的gem 'jquery-datatables-rails', github: 'rweng/jquery-datatables-rails'
(ajax-datatables-rails是该宝石的一个分支)。
http://railscasts.com/episodes/340-datatables
http://www.nikolatodorovic.com/nikolas-blog/rails-4-datatables-110-ajax
在thoose教程中,他们展示了如何通过ajax进行搜索以避免加载页面中的所有记录..分页工作没有问题..
答案 1 :(得分:0)
ajax-datatables-rails gem已更新。不是它更强大,看看或可以尝试how-to示例项目