Kaminari Pagination не влияет на таблицу

Я использую драгоценный камень kaminari для разбиения на страницы в своем приложении rails для разбиения на страницы категорий. Я реализовал весь процесс, и ссылки на страницы также отображаются. Но это не влияет на список элементов таблицы.

Индексировать действие в контроллере

    def index
            @categories = current_user.categories
            @categories =  Kaminari.paginate_array(@categories).page(params[:page]).per(5)
    end

Представление индекса

<h1>Categories</h1>
    <div class="well">
    <%= link_to "+ New Category", new_category_path, class: "btn btn-success" %>
    </div>

    <%= paginate @categories %>
    </br>
    <%= page_entries_info @categories %>
    <table class="table table-bordered table-striped">
      <thead>
        <tr>
          <th>Name</th>
          <th>Actions</th>
        </tr>
      </thead>
      <tbody>
        <% if current_user.categories.count == 0 %>
          <tr>
            <td colspan="2">
              No categories found.  Click the button above to add a new one.
            </td>
          </tr>
        <% else %>
          <% current_user.categories.each do |category| %>
            <tr>
              <td><%= link_to category.name, category %></td>
              <td><%= link_to "Edit", edit_category_path(category), class: "btn btn-primary" %>
                  <%= link_to "Delete", category, method: :delete,
                        data: { confirm: "You sure?" }, class: 'btn btn-small btn-danger' %>
              </td>
            </tr>
          <% end %>
        <% end %>
      </tbody>
    </table>

Скриншотвведите здесь описание изображения

Как показано на рисунке выше, он показывает все 7 записей для разбивки по 5 страницам.

Может кто-нибудь объяснить, почему он не работает.


person Atchyut Nagabhairava    schedule 01.06.2016    source источник


Ответы (1)


Я думаю, проблема связана с вашим типом массива. Пожалуйста, попробуйте следующий код.

  def index  
    @categories = current_user.categories.all
    unless @categories.kind_of?(Array)
      @categories = @categories.page(params[:page]).per(5)
    else
      @categories = Kaminari.paginate_array(@categories).page(params[:page]).per(5)
    end
  end

Вы пробовали этот способ? Это более оптимизировано, извлекайте только те записи, которые требуются.

@categories = current_user.categories.page(params[:page]).per(5)

Решение взято из: rails 3, разбиение на страницы Kaminari для простого массива

person Aamir    schedule 01.06.2016
comment
Я собирался дать тот же ответ! - person Manish Shrivastava; 01.06.2016