2009-04-06 9 views
6

Ich suche nach einem Vorschlag auf dem besten Weg, einen Endbenutzer von den Sichtdateien einer Rails-Anwendung die Sortierreihenfolge eines Resultsets zu setzen, das vom "Finden" eines Modells zurückgegeben wird Methode. Mit anderen Worten, ich möchte, dass ein Benutzer seine Sortierreihenfolge aus einer Auswahlliste auswählen kann.Beste Weise, Endbenutzer zu haben, Sortierreihenfolge in Schienen zu spezifizieren

Zuerst dachte ich, ich könnte einfach die Zeichenfolge setzen, die ich in den Parameter: order legen würde, aber das scheint aus Sicherheitsgründen eine schlechte Idee zu sein.

Ich nehme an, ich könnte immer einen Schalter basierend auf Werten aus einer Auswahlliste verwenden, aber das scheint ein bisschen sperrig.

Danke fürs schauen.

Antwort

4

Ich würde AR :: Base # column_names verwenden, um die Eingabe zu bereinigen. Etwas wie:

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

Sie diese erweitern können, mit ein wenig Vorverarbeitung, variieren, ob Sie aufsteigend sortiert werden soll oder mit jeder Taste absteigt. Hoffe das hilft!

+0

Nifty kopieren konnte, danke :) – jklina

2

Dies könnte außerhalb von dem sein, was Sie suchen, aber in letzter Zeit habe ich auf Javascript angewiesen, um die nachfolgende Sortierung für mich zu kümmern. Ein guter Tischsortierer für den Prototyp ist Tablekit (http://www.millstream.com.au/view/code/tablekit), es ist unaufdringlich, schnell und einfach zu bedienen. Es enthält auch Feinheiten wie Editing in Place und Spaltengrößenanpassung.

0

etwas Schienen von CakePHP Gerüst (paginator Sortierer auf Index() in CakePHP)

+0

Diese Antwort etwas spärlich ist ... Sie ein wenig erarbeiten könnte? –

Verwandte Themen