【问题标题】:Rails 4: Kaminari - Displaying duplicatesRails 4:Kaminari - 显示重复项
【发布时间】:2014-07-07 19:14:51
【问题描述】:

我在 Rails 4 应用程序中使用 Kaminari 和 AJAX。到目前为止,我已经能够为第一页 (13) 显示不同数量的记录,但之后的每一页都显示了 14 条记录的 AJAX。这或多或少是完美的。

但是,一旦我将第一页的记录数设置为更大的数字,比如 27,kaminari 就会开始加载前 27 页中已经显示的重复项。

在我的开发应用程序中,我总共只有 30 条记录。第一页确实显示了 27 个,而第 2 页应该只显示 3 个,但是它最终会显示第一页的 14 个副本,然后在另一页上显示最后 3 个副本。

有谁知道为什么它会重复加载,而不是只显示第 2 页的最后 3 个?

PagesController.rb > 索引

@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>

index.js.erb

$('#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) %>");

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 pagination kaminari


    【解决方案1】:

    我认为 Kaminari 使用 .per 方法检测 per_page 项目计数,并且当您第一次调用 .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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      相关资源
      最近更新 更多