分页不适用于Ajax-Datatable-Rails

时间:2015-08-04 04:14:51

标签: ruby-on-rails ajax pagination datatables kaminari

我正在尝试在 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

屏幕截图:

第1页 enter image description here 第2页 enter image description here

如上面的屏幕截图所示,即使我想在第二页上,列表仍然是第一页。

2 个答案:

答案 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示例项目