will_paginate的使用

rails自带的分页功能有限,加上will_paginate插件能够很强的增加功能

 

1.一对多的分页最简单:比如一个类目下很多文章,要显示气象学下的所有文章并20篇分为一页:

def show

  @category = Category.find(params[:id],:include=>:papers])                

@papers=Paper.paginate_by_category_id category.id,:page=>params [:page],:per_page=>20

end

在rhtml中只需要

<%= will_paginate @papers %>

他自己带有很漂亮的分页css,当然要加进css文件。

 

2.多对多还没研究到,rails自带的paginate可以处理,

 

def show
        @author = Author.find(params[:id],:include=>[:papers])
        @paper_pages, @papers = paginate :paper,
          :join=>"JOIN authors_papers on (authors_papers.paper_id=papers.id and authors_papers.author_id=#{@author.id})",:per_page=>20
end

 

<div class="pagination">
<%= link_to '<<', { :page => @paper_pages.current.previous } if @paper_pages.current.previous %>
<%= pagination_links(@paper_pages,:window_size=>5) %>
<%= link_to '>>', { :page => @paper_pages.current.next } if @paper_pages.current.next %>

 </div>

 

这个效率肯定不高。等学会了will_paginate再来修改。

你可能感兴趣的:(css,Rails)