2009-04-06 4 views
6

Sto cercando un suggerimento sul modo migliore di avere un utente finale da un file di visualizzazione dell'applicazione Rails imposta l'ordinamento di un set di risultati restituito dal "find" di un modello metodo. In altre parole, vorrei che un utente fosse in grado di scegliere il proprio ordinamento da un elenco di selezione.Il modo migliore per avere l'utente finale Specificare l'ordinamento in Rails

Inizialmente, ho pensato di inserire la stringa che avrei inserito nel parametro: order, ma mi sembra una cattiva idea dal punto di vista della sicurezza.

Suppongo che potrei sempre utilizzare uno switch basato su valori da un elenco di selezione, ma che sembra un po 'ingombrante.

Grazie per la ricerca.

risposta

4

Vorrei utilizzare AR :: Base # column_names per disinfettare l'input. Qualcosa di simile:

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

È possibile estendere questo, con un po 'di pre-elaborazione, per variare se si desidera ordinare ascendente o discendente con ogni tasto. Spero che questo ti aiuti!

+0

Nifty, grazie :) – jklina

2

Questo potrebbe essere al di fuori di quello che stai cercando, ma ultimamente, ho fatto affidamento su javascript per occuparmi del successivo ordinamento per me. Un buon selezionatore di tabelle per prototipo è Tablekit (http://www.millstream.com.au/view/code/tablekit), non invadente, veloce e facile da usare. Include anche sottigliezze come la modifica sul posto e il ridimensionamento della colonna.

0

qualcosa rotaie potrebbero copiare da cakephp patibolo (sorter paginator su indice() in CakePHP)

+0

Questa risposta è un po 'scarsa ... si potrebbe elaborare un po'? –