Paginate Rails экземпляры объекта зациклены в HTML?

В моем приложении Rails я перебираю все экземпляры модели Product, которые соответствуют определенным критериям, и отображаю их на странице профиля пользователя. Вот как выглядит цикл:

<% notsold = @user.products.where("sold_value = false").order("created_at DESC") %>
  <% notsold.each do |f| %>
    <% if f.sold_value === false %>
    // do stuff 
    <% end %>
  <% end %>

Это представление - profile.html.erb под контроллером пользователя. То, что я пытаюсь выяснить, это как разбить на страницы fили каждый из продуктов в созданном массиве. У меня установлен драгоценный камень will_paginate. Вот действие в профиле users_controller.rb:

def profile
    @user = User.find(params[:id])
    respond_to do |format|
      format.html
    end
  end

Кто-нибудь знает, что делать?

1 ответ

Вы можете предоставить @products переменная экземпляра в контроллере, как это

@products = @user.products.where("sold_value = false").order("created_at DESC").paginate(:page => params[:page], :per_page => 30) 

Тогда вы можете зациклить @products в вашем коде

<% @products.each do |f| %>
  <% if f.sold_value === false %>
    // do stuff 
  <% end %>
<% end %>
Другие вопросы по тегам