2010-01-21 14 views
1

J'utilise la gemme will_paginate pour afficher une collection de façon paginée. Maintenant, j'aimerais avoir des fonctionnalités de tri sur les colonnes de la liste dans la vue. J'ai ajouté mon propre mécanisme personnalisé pour l'établir, mais je me suis demandé s'il n'y avait pas une façon standard de le faire, en tirant parti de la simplicité et de l'élégance de will_paginate.Approche de fait pour trier avec will_paginate

Répondre

2

Oui, il y a une manière élégante de le faire. En utilisant ujs_sort_helper. Vous pouvez trouver plus de détails here

+0

J'aime le fait que cela permet aussi bien la mise en page que les tables. Merci. –

+0

ce lien est mort – ktec

+0

@Globalkeith Correction du lien mort. –

1

searchlogic se branche bien avec will_paginate.

Il ne semble pas que vous cherchiez, mais tout montrer est juste un cas spécial pour une recherche. Vous pouvez utiliser uniquement les fonctions de tri et ignorer le reste si vous ne souhaitez pas filtrer vos données.

+0

Pas une réponse directe à la question, mais merci pour le lien utile. –

1

Sur les projets précédents où j'ai mis en œuvre à la fois le tri et la pagination, j'ai laissé will_paginate gérer la pagination tout en utilisant overwrite_params pour gérer le tri.

Par exemple (en supposant une table)

<tr> 
    <th><%= link_to "ID", overwrite_params(:sort => "id", :page => 1) %></th> 
    <th><%= link_to "Name", overwrite_params(:sort => "name", :page => 1) %></th> 
</tr> 
<tr> 
    ... information ... 
</tr> 

overwrite_params fait exactement ce que vous pensez qu'il fait ... il vous donnera de nouveau l'URL actuelle avec toutes les params existantes remplacées par les valeurs spécifiées, ou toutes les valeurs précédemment inexistantes insérées dans l'URL.

Depuis will_paginate conserve déjà des params url, en utilisant overwrite_params dans vos en-têtes de colonnes avec remise à zéro la page en 1 (qui est facultatif), signifie que vous obtenez de continuer à utiliser les avantages de will_paginate sans qu'il piratage jusqu'à aussi gérer votre tri.