分页问题

昨天做的图片分页,今天记录下来以供和我一样的新手学习

1.
在Rails2.0.2之前,我们可以借助Rails自带的分类方法,

在controller中直接写
@picture_pages,@pictures = paginate :pictures, :per_page => 10
返回的@picture_pages是一个paginator对象,他会把所有Picture模型对象分为多个页面,每页10个对象.此外,该声明还会取出一页所包含的用户对象,将他们放进@pictures变量中
在view中直接拿出这一页的对象
<table>
<tr><th>Picture</th></tr>
<% for picture in @pictures %>
<tr><td><%= picture.name %></td></tr>
<% end %>
</table>

<hr>
<%= paginate_links(@picture_pages) %>
</hr>

2.
使用will_paginate插件
我的插件是同学给我的,直接放到要使用的工程下面的vender/plugin/下,要重启服务器才可以使插件起作用

在controller中写
@pictures = Picture.paginate :page => params[:page], :per_page => 3
返回的就是该页的对象

在view中写
<%= will_paginate @pictures,
:prev_label => 'Previous Page',
:next_label => 'Next Page' %>
即可实现分页功能


3.直接手工实现分页的方法
@items = Picture.find( :limit => 10,:offset => params[(Page-1)*10])
render(:partial => “abc”, :collection => @items %>

这个方法我还没有用,Page需要传入的
只不过应该是效率最高的




注意:在使用will_paginate分页的是使用,会自动根据点击的页数在当前的地址栏的地址上加上&page=?的一段,然后发起调用,也就是说,假如你的login之后使用render进入了图片显示的页面,这时候地址栏上的地址还是login的,此时点击NextPage时就会再次发起对login的调用,很可能会出来找不到模板的错误,所以在使用分页的前一个页面应该是使用重定向到用到分页方法的页面.

你可能感兴趣的:(Rails)