La pagination d'un Tableau en Ruby avec will_paginate
J'ai un tableau @niveau1 qui ressemble à ceci :
[[3.0, 4, 2], [2.0, 48, 3], [2.1, 56, 4], ............]
Je veux appliquer la pagination sur ce tableau de telle sorte que chaque page ne s'affiche que quelques lignes à la fois. J'ai essayé ceci:
@temp1 = @level1.paginate(:page => params[:page])
Mais il génère l'erreur suivante:
undefined method `paginate' for [[3.0, 4, 2], [2.0, 48, 3], [2.1, 56, 4]]:Array
Comment puis-je effectuer la pagination sur cette aide will_paginate?
Vous devez vous connecter pour publier un commentaire.
Sûr, vous pouvez utiliser
WillPaginate::Collection
de construire arbitraire de la pagination à travers les collections. Dans l'hypothèse d'un tableau appelévalues
:Vous pouvez ensuite traiter
@values
juste comme n'importe quel autre WillPaginate collection, y compris le passage à lawill_paginate
helper de vue.will_paginate
helper de vue, mais le tableau n'est pas décomposé: la liste complète est généré. Rien de particulier nécessaire dans la vue?.pagination[...]
et enfin:WillPaginate::Collection.create(1, 10, @values.length)
. Toutefois, cela renvoieundefined method
page " pour # < Array`... Est-ce documenté quelque part? J'ai été à la recherche... d'affichage stackoverflow.com/questions/23875093/...Voir https://github.com/mislav/will_paginate/blob/master/lib/will_paginate/array.rb
Juste
require 'will_paginate/array'
avant de l'essayer et il fonctionne très bien. Si c'était moi, je l'avais mis que de direconfig/initalizers/will_paginate_extensions.rb
il est donc disponible tout de suite et de partout.PaginatedArray
, qui hérite deArray
et a cette méthode pourrait être la meilleure façon de faire. Mais je vais aller avec Chris solution.Donné un
collection
tableau dans un Rails de projetrenvoie à la pagination pour les valeurs de tableau.
Ne pas oublier
require 'will_paginate/array'
sur le dessus de la manette.paginate
. C'est l'erreur que je reçois:NoMethodError: undefined method
paginer " pour #<Tableau:0x007fc983759000>`C'est mon exemple en fonction de la réponse de @chris-heald
Je n'étais pas vraiment heureux avec les réponses fournies dans ce thread.
Je suis venu avec cette solution.
Et vous pouvez l'utiliser comme ça:
J'aime bien cette solution car elle est explicite et que vous ne polluez pas votre classes standard.
Cela étant dit, vous êtes dépendant de rails depuis que j'ai utiliser "delegate_missing_to".