我正在使用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
答案 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"
}
} );