2011-02-11 94 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