Ruby on rails Rails 4:Kaminari-显示重复项
我正在Rails 4应用程序中使用Kaminari和AJAX。到目前为止,我已经能够为第一页显示不同数量的记录(13条),但之后每一页显示14条记录。这或多或少是完美的 但是,一旦我将第一页的记录数设置为更大的数字,比如27,kaminari就会开始加载前27页中已经显示的副本 在我的开发应用程序中,我总共只有30条记录。第一页确实显示了27个,第2页应该只显示3个,但是它最终显示了第一页的14个副本,然后在另一页上显示了最后3个副本 有人知道为什么它会以副本的形式加载,而不是只显示第2页的最后3个副本吗 PagesController.rb>索引Ruby on rails Rails 4:Kaminari-显示重复项,ruby-on-rails,ruby-on-rails-4,pagination,kaminari,Ruby On Rails,Ruby On Rails 4,Pagination,Kaminari,我正在Rails 4应用程序中使用Kaminari和AJAX。到目前为止,我已经能够为第一页显示不同数量的记录(13条),但之后每一页显示14条记录。这或多或少是完美的 但是,一旦我将第一页的记录数设置为更大的数字,比如27,kaminari就会开始加载前27页中已经显示的副本 在我的开发应用程序中,我总共只有30条记录。第一页确实显示了27个,第2页应该只显示3个,但是它最终显示了第一页的14个副本,然后在另一页上显示了最后3个副本 有人知道为什么它会以副本的形式加载,而不是只显示第2页的最后
@dabbles = Dabble.where(:completed_upload => true, :sketch => false).order('created_at DESC')
@dabbles = Kaminari.paginate_array(@dabbles)
@page = (params[:page] || '1').to_i
if @page == 1
@dabbles = @dabbles.page(params[:page]).per(27)
else
@dabbles = @dabbles.page(params[:page]).per(14)
end
respond_to do |format|
format.html
format.js
format.json
end
index.html.erb
<div class="grid" id="fresh">
<%= render :partial => 'pages/hexagons', :locals => { :dabbles => @dabbles, :count => 1 } %>
</div>
<div id="corrections" style="display: inline;">
<!-- irrelevant. -->
</div>
<div id="paginator">
<%= link_to_next_page @dabbles, 'Load More', :remote=>true %>
</div>
$('#fresh').append("<%= escape_javascript render :partial => 'pages/hexagons', :locals => { :dabbles => @dabbles, :count => 0 } %>");
$('#corrections').append("<%= escape_javascript render :partial => 'pages/corrections', :locals => { :correction => correct_helper(@dabbles.size) } %>");
$('#paginator').html("<%= escape_javascript(link_to_next_page @dabbles, 'Load More', :remote=>true) %>");
'页面/六边形',:locals=>{:dabbles=>@dabbles,:count=>1}%>
正确%>
index.js.erb
<div class="grid" id="fresh">
<%= render :partial => 'pages/hexagons', :locals => { :dabbles => @dabbles, :count => 1 } %>
</div>
<div id="corrections" style="display: inline;">
<!-- irrelevant. -->
</div>
<div id="paginator">
<%= link_to_next_page @dabbles, 'Load More', :remote=>true %>
</div>
$('#fresh').append("<%= escape_javascript render :partial => 'pages/hexagons', :locals => { :dabbles => @dabbles, :count => 0 } %>");
$('#corrections').append("<%= escape_javascript render :partial => 'pages/corrections', :locals => { :correction => correct_helper(@dabbles.size) } %>");
$('#paginator').html("<%= escape_javascript(link_to_next_page @dabbles, 'Load More', :remote=>true) %>");
$(“#fresh”).append(“'pages/hexagons',:locals=>{:dabbles=>@dabbles,:count=>0}%>”;
$(“#更正”).append(“'pages/corrections',:locals=>{:correction=>correct_helper(@dabbles.size)}%>”;
$('#paginator').html(“true)%>”;
我认为Kaminari检测每页的项目使用.per方法计数,当您第一次调用.per(27)时,您将获得前27个元素。在第二页,你可以看到15..28个元素(不是27..41)
这样试试
@paginated_dabbles = Kaminari.paginate_array(@dabbles[27..-1])
@page = (params[:page] || '1').to_i
if @page == 1
@dabbles[0...27]
else
@paginated_dabbles = @dabbles.page(params[:page]).per(14)
end