2013-10-27 69 views
2

我试图改变这个分页来反转分页。从我怎样才能做到这一点sophistictaed?

|Last|Next|25|24|23|22|21|Previous|First| 

|First|Previous|21|22|23|24|25|Next|Last| 

所以,我编写这样的下面,但需要很长时间。这可能是因为它会提取所有评论以便首先传递参数,然后再次执行application_controller.rb

是否有任何智能方法可以使此更快?

user_controller.rb

@comments = reverse_paginate(Comment.where(:user_id => user_ids, :commentable_type => commentable).order('created_at DESC'), params[:page]) 

application_controller.rb

def reverse_paginate(scope, page) 
    if page 
     page_number = page 
    else 
     page_number = Kaminari.paginate_array(scope.reverse).page(1).per(10).num_pages 
    end 
    Kaminari.paginate_array(scope.reverse).page(page_number).per(10).reverse! 
end 
+1

您在application_controller最后一行两次反转的阵列。有必要吗? – hedgesky

+0

1(旧),2,3 .... 10,11,12(较新)但在同一页中,我希望最新的一个在顶部,最旧的评论在底部。这就是我想要订购的记录 – HUSTEN

回答

1

我认为你必须重写雷的分页程序模板。

<%= paginator.render do -%> 
    <nav class="pagination"> 
    <%= first_page_tag unless current_page.first? %> 
    <%= prev_page_tag unless current_page.first? %> 
    <% each_page do |page| -%> 
     <% if page.left_outer? || page.right_outer? || page.inside_window? -%> 
     <%= page_tag page %> 
     <% elsif !page.was_truncated? -%> 
     <%= gap_tag %> 
     <% end -%> 
    <% end -%> 
    <%= next_page_tag unless current_page.last? %> 
    <%= last_page_tag unless current_page.last? %> 
    </nav> 
<% end -%> 

来源here

+0

感谢您的完美回答:) – HUSTEN

相关问题