will_paginate для массива отображает только первую страницу элементов

Мне нужно разбить массив на страницы. Когда я нажимаю на другие страницы, я вижу те же 25 элементов, которые отображаются на первой странице. URL является http://localhost:3000/?page=2 но это те же 25 предметов. Всего их около 100.

Вот мой метод контроллера:

def index
  @items = Array.new
  API.items.all! do |i|
    @items << i
  end
  @paginated_items = @items.paginate(per_page: 25)
end

Вот мой HTML-файл:

<%= will_paginate @paginated_items %>

<ul class="items">
  <% @paginated_items.each do |i| %>
    <li>Subject: <%= i.subject %>, ID: <%= i.id %></li>
  <% end %>
</ul>

<%= will_paginate @paginated_items %>

Я также добавил require 'will_paginate/array' инициализатору.

1 ответ

Решение

Я думаю, что вы пропустили страницу: params[:page] в контроллере индекса, вот как will_paginate узнает, какую страницу вы сейчас используете.

def index
  @items = Array.new
  API.items.all! do |i|
    @items << i
  end
  @paginated_items = @items.paginate(page:params[:page],per_page:25)
end
Другие вопросы по тегам