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
<%= 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 %>
这个效率肯定不高。等学会了will_paginate再来修改。