使用deferLoading启用分页

时间:2015-06-25 20:21:02

标签: ruby-on-rails ajax datatables

我正在使用Rails应用程序并在jQuery DataTables上使用while(!bool){ // do nothing, just wait until bool is true } // now go do subsequent code 选项,以便将第一个DataTables加载到Rails控制器。

我有数据表加载我想要的方式,在初始html加载时加载控制器中的初始表摆脱了Ajax延迟,但是,Datatable信息部分不会显示分页结果。

代码和图像如下所示。

除了桌子底部的分页外,一切都有效,我不能让它应用与Ajax调用数据表相同的细节。关于这个问题的任何想法或方向将不胜感激!

deferLoading: true

index.html.erb:

<div class="row"> <div class="col-xs-12 table-wrapper"> <div class="inner-wrapper"> <p class="quick-app"> <a class="custom-btn accent-inverse-btn add-user" href="<%= calculator_path%>">Quick Application</a> </p> <table class="table table-striped table-scroll cms-table-width dataTable" id="customer_deals_datatable" data-source="<%= dealer_customer_deals_url(:include_archived => params[:include_archived].present?) %>" > <div> <thead> <tr> <th>ID/Calculator</th> <th>Applicant/Co-Applicant</th> <th>Year</th> <th>Model</th> <th>App Status</th> <th>Tier Number</th> <th>Docs Status</th> <th>Submitted On</th> <th>Days Remaining</th> <th>Chrome Decision</th> <th>Updated At</th> <th>Actions</th> </tr> </thead> <tbody> <% @datatable.data.each do |datum| %> <tr> <% datum[0] = datum[0].join('') %> <%= (datum.map {|content| "<td>#{content}</td>"}.join('')).html_safe %> </tr> <% end %> </tbody> </div> </table> </div> </div> <!-- </div>#content --> </div>

controller

这是项目中数据表类的代码的一部分:

def index
  respond_to do |format|
    format.html do
      params.merge!({"iDisplayLength"=>"10","iSortCol_0"=>"10","sSortDir_0"=>"desc"})
      @datatable = CustomerDeals::CustomerDealsDataTable.new(view_context, @dealer)
    end
    format.json { render json: CustomerDeals::CustomerDealsDataTable.new(view_context, @dealer) }
  end
end

with ajax datatable info pagination working rendering html datatable from controller, no pagination

1 个答案:

答案 0 :(得分:1)

您走在正确的轨道上,deferLoading也可以分配整数两个整数的数组来指定表格中有多少条记录分页工作。

来自manual

  

deferLoading用于表示需要延迟加载,但它也用于告诉DataTables完整表中有多少条记录(允许正确显示信息元素和分页)。

     

在初始加载时对表应用过滤的情况下,可以通过将参数作为数组给出来指示,其中第一个元素是过滤后可用的记录数,第二个元素是数量没有过滤的记录(允许正确显示表信息元素)。

<强>示例:

表中有57条记录,未应用过滤:

$('#example').dataTable( {
  "serverSide": true,
  "ajax": "scripts/server_processing.php",
  "deferLoading": 57
} );
过滤后有57条记录,100条没有过滤(应用初始过滤器):

$('#example').dataTable( {
  "serverSide": true,
  "ajax": "scripts/server_processing.php",
  "deferLoading": [ 57, 100 ],
  "search": {
    "search": "my_filter"
  }
} );