2016-06-01 1 views
1

J'utilise kaminari gem pour la pagination dans mon application rails pour paginer les catégories. J'ai implémenté tout le processus, et les liens de pagination sont également affichés. Mais ceci n'affecte pas la liste des éléments de la table.Kaminari La pagination n'affecte pas la table

action Index dans le contrôleur

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

vue Index

<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> 

Screenshotenter image description here

Comme le montre le schéma ci-dessus montre toutes les 7 entrées pour une pagination de 5/page.

Quelqu'un peut-il s'il vous plaît expliquer la raison pour laquelle il ne fonctionne pas.

Répondre

2

Je pense que problème est avec votre type de tableau. S'il vous plaît essayez le code suivant.

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 

Avez-vous essayé de cette façon? Son plus optimisé, ne récupère que les enregistrements requis.

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

Solution adoptée à partir de: rails 3,Kaminari pagination for an simple Array

+0

Désolé, Aamir. Aucun d'entre eux ne travaille: | –

+0

J'étais sur le point de donner la même réponse! –