2009-03-24 3 views
1

Gibt es Tipps, wie Sie die Sortierung und Paginierung für eine Ressource in einer Rails-Anwendung implementieren und sie dennoch REST-konform halten?Paginierung und Sortierung in einer REST-Anwendung von Rails

Wie ordne ich die Parameter für Seitennummer und Sortierfeld sauber zu? (Ich verwende zur Zeit map.resources: x für jede Ressource in meiner App)

Irgendwelche anderen performace-Probleme, über die ich wissen sollte? (zB Caching)

Vielen Dank im Voraus.

EDIT Ich reformulierte die Frage in eine mehr generic one, in der Hoffnung, dass ich mehr Antworten bekommen werde. Ich werde dafür stimmen, diesen zu schließen, da er nicht mehr relevant ist. Danke für die Antworten wahnsinnig-Träumer und vrish88.

Antwort

2

Ich würde Ihnen empfehlen, in diesem Artikel einen Blick:

http://dev.nozav.org/rails_ajax_table.html

http://dev.nozav.org/ajaxtable/(dies ist die Demo-Anwendung)

ich den gleichen grundlegenden Code in einem meiner Anwendungen verwendet haben . Ich habe die AJAX-Implementierung, die sie beschreiben, nicht verwendet, aber ich habe die Sortierhilfen verwendet, die sie erwähnen, und dann habe ich meine Ansicht strukturiert, um das Sortieren zu ermöglichen. In den Sortierhelfern willst du nur die Ajax-Sachen rausholen. Mine am Ende wie folgt aussehen:

def sort_link_helper(text, param) 
    key = param 
    key += "_reverse" if params[:sort] == param 
    parameters = params.merge({:sort => key, :page => params[:page], :action => controller.action_name }) 
    link_to(text, url_for(parameters)) 
end 

def sort_td_class_helper(param) 
    result = 'class="sortup"' if params[:sort] == param 
    result = 'class="sortdown"' if params[:sort] == param + "_reverse" 
    return result 
end 

Der beste Teil über diese Implementierung ist, dass ist RESTful, trocken und einfach zu bedienen!

+0

Danke für die Antwort, ABER .. was ist mit Caching in diesem Fall? Ich denke, ich werde Probleme damit haben. Auch "? Page = x & sort = y" ist nicht sehr sauber IMHO. – andi

+0

Hmmm, ich weiß nicht wirklich viel über Caching, aber konnte man nicht einfach die Ergebnisse der SQL-Abfrage speichern und dann die Ergebnisse aus dem Cache sortieren? Außerdem kenne ich keine andere Möglichkeit, die Seite zu speichern und Variablen zu sortieren, die Sinn ergeben ... aber ich bin offen für Vorschläge – vrish88

+0

"Hinweis: Seitencache ignoriert alle Parameter, also/products/list? Page = 1 wird in das Dateisystem als /products/list.html geschrieben und wenn jemand/products/list? page = 2 anfordert, erhalten sie das gleiche Ergebnis wie page = 1. Seien Sie vorsichtig, wenn Sie GET-Parameter in der URL zwischenspeichern! " – andi

5

Haben Sie versucht, will_paginate? Gibt es einen Grund, warum es nicht Ihren spezifischen Bedürfnissen entspricht? (http://github.com/mislav/will_paginate/tree/master)

+0

Ich benutze bereits das Plugin will_paginate. Ich hatte auf mehr Antworten bezüglich des REST-Teils gehofft. Ich denke, ich werde die Frage neu formulieren und die "schienenspezifischen" Teile entfernen. – andi

Verwandte Themen