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
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
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.
Pas une réponse directe à la question, mais merci pour le lien utile. –
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.
Java the Hutt's sortable_table
Optez pour cassé. C'est un plugin AWESOME rails. Vraiment facile à mettre en place.
J'aime le fait que cela permet aussi bien la mise en page que les tables. Merci. –
ce lien est mort – ktec
@Globalkeith Correction du lien mort. –