Частично в приложении rails 3 рендерится :per_page раз при использовании will_paginate

Я использую will_paginate в своем приложении rails 3.

В моем контроллере у меня есть строка как

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)%>, который является правильным, так как по умолчанию рельсы 3 уже отправляют коллекцию @blogs в частичное, не нужное для петля в частичных..


person useranon    schedule 11.02.2011    source источник


Ответы (1)


Когда рендеру передается коллекция, он автоматически выполняет частичный рендеринг несколько раз.

Поэтому вы хотите, чтобы ваш частичный _blog.html.erb был просто:

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

Вам не нужен каждый оператор, потому что об этом позаботится оператор рендеринга.

См. раздел 3.4.5 «Коллекции визуализации» в http://guides.rubyonrails.org/layouts_and_rendering.html

person travis-146    schedule 16.02.2011