Частично в rails 3 приложение рендерит: per_page раз при использовании will_paginate - PullRequest
1 голос
/ 11 февраля 2011

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

1 Ответ

0 голосов
/ 16 февраля 2011

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

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

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

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

См. 3.4.5 «Рендеринг коллекций» в http://guides.rubyonrails.org/layouts_and_rendering.html

...