2009-04-06 4 views
6

Je cherche une suggestion sur la meilleure façon d'avoir un utilisateur final à partir des fichiers de vue d'une application Rails définir l'ordre de tri d'un ensemble de résultats renvoyé par la "trouver" d'un modèle méthode. En d'autres termes, j'aimerais qu'un utilisateur puisse choisir son ordre de tri à partir d'une liste de sélection. Au début, j'ai pensé que je pouvais simplement mettre la chaîne que je mettrais dans le paramètre: order, mais cela semble être une mauvaise idée du point de vue de la sécurité. Je suppose que je pourrais toujours utiliser un commutateur basé sur des valeurs d'une liste de sélection, mais cela semble un peu encombrant.Meilleure façon d'avoir un utilisateur final Spécifier l'ordre de tri dans les rails

Merci de votre visite.

Répondre

4

Je voudrais utiliser AR :: Base # column_names pour assainir l'entrée. Quelque chose comme:

@models = Model.find(:all, :order => params[:sort].select({|name| Model.column_names.include? (name) }).join(',')) 

Vous pouvez étendre cela, avec un peu de pré-traitement, pour faire varier si vous voulez trier par ordre croissant ou décroissant avec chaque touche. J'espère que cela t'aides!

+0

Nifty, merci :) – jklina

2

Cela peut être en dehors de ce que vous cherchez, mais récemment, je me suis basé sur javascript pour prendre soin du tri suivant pour moi. Un bon trieur de table pour le prototype est Tablekit (http://www.millstream.com.au/view/code/tablekit), il est discret, rapide et facile à utiliser. Il inclut également des finesses telles que l'édition en place et le redimensionnement des colonnes.

0

rails quelque chose pourrait copier échafaudage CakePHP (trieuse paginator sur index() dans CakePHP)

+0

Cette réponse est un peu clairsemée ... Pouvez-vous préciser un peu? –

Questions connexes