2010-10-09 4 views
2

J'utilise les Rails 3 plug-in will_paginate et ont utilisé le tutoriel ci-dessous pour savoir comment personnaliser les liens Pagination:Rails 3- will_paginate - Faire les liens Pagination plus comme GMAIL

http://thewebfellas.com/blog/2010/8/22/revisited-roll-your-own-pagination-links-with-will_paginate-and-rails-3/

Mon question est, comment faire les liens plus paginations comme GMAIL, par exemple:

1-100 de 25409 ancien> le plus ancien »

le plus ancien»

«Les plus récents

Merci

Répondre

3

Il semble que ce lien a (presque) toutes les informations dont vous avez besoin.

« ancien » est essentiellement « Page suivante », vous substituez la méthode next_page dans votre moteur de rendu. "Le plus ancien" est "Dernière page"; vous devrez ajouter une méthode puis assurez-vous qu'elle est incluse dans le tableau renvoyé par votre méthode pagination (la méthode total_pages intégrée à will_paginate vous aidera ici).

Ensuite, faire l'inverse pour les nouveaux/la plus récente.

Jetez un oeil aux fichiers et link_renderer.rblink_renderer_base.rb. Ils ont les méthodes que vous allez surcharger.

J'ai écrit un will_paginate personnalisé 3 imiter le générateur de GitHub/Twitter style de pagination "Plus". J'ai annoté le code ci-dessous. Cela ne vous aidera pas exactement où vous devez aller, mais c'est un début. Tout ce que j'ai besoin de savoir pour faire ceci peut être compris en lisant les deux fichiers source que j'ai liés ci-dessus.

Il m'a vraiment étonné comment cela était facile à faire; le dernier design de will_paginate est brillant dans ce domaine.

+0

Merci, c'est plutôt cool. Mais je ne suis toujours pas en train de suivre la procédure pour la rendre conditionnelle (Afficher uniquement Plus si elle est active) ... De plus, comment afficher et compter les enregistrements avant les liens (1 - 100 sur 25406) ​​ – AnApprentice

+1

Notez le 'if @ collection.next_page' conditionnelle - elle affiche seulement "Plus" s'il y a une page suivante. Pour numéroter les articles, c'est un peu plus compliqué. Regardez dans le fichier [collection.rb] (http://github.com/mislav/will_paginate/blob/v3.0.pre2/lib/will_paginate/collection.rb). Il s'agit essentiellement d'un tableau avec des méthodes supplémentaires, vous pouvez donc appeler '@ collection.size' pour connaître le nombre d'éléments de ce groupe; multipliez cela par 'current_page' pour obtenir le début, ajoutez le nombre d'éléments dans le groupe au début pour obtenir le maximum, etc –

+0

l'ai - merci! – AnApprentice

0

Essayez quelque chose comme

<%= will_paginate @items, :class => 'apple_pagination' %> 

classe peut aussi être digg_pagination, .flickr_pagination.

Avant que vous êtes tenus de download et copier pagination.css à votre public/stylesheets.

Questions connexes