2011-02-11 81 views
1

我在我的rails 3应用程序中使用了will_paginate。Partial in rails 3 application render:per_page times while using will_paginate

在我的控制器我有一个线

def index 
    @blogs = Blog.paginate(:per_page => 5, :page => params[page]) 
end 

而在我的index.html.erb

<div> 
    <% if @blogs.size.zero? %> 
    No Blogs Found 
    <% else %> 
    <%= render @blogs if @blogs %> 
    <% end %> 
</div> 
<%= will_paginate @blogs%> 

而在我的局部_blog.html.erb

<% @blogs.each do |blog| %> 
    <%= link_to blog.title, blog_path(blog.id)%> 
<% end %> 

当我通过$ rails运行应用程序时s

局部显示内容per_page倍.. 对于它显示5倍的第一页..

如何避免这样.. 给我一些建议...

EDIT 

我改变了部分代码在_blog.html.erb到 <%= link_to blog.title,blog_path(blog.id)%> 这是正确的默认情况下,rails 3会将集合@blogs发送到部分未使用的循环中的部分..

回答

0

渲染通过集合时,会自动呈现多次部分。

因此你希望你的部分_blog.html.erb仅仅是:

<%= link_to blog.title, blog_path(blog.id)%> 

因为渲染语句完成这个功能你并不需要一个每个语句那里。

请参阅3.4.5“渲染集合”中的http://guides.rubyonrails.org/layouts_and_rendering.html