2009-05-21 3 views
1

Wie kann man eine Schnittstelle, die in Schienen aussieht, am besten implementieren?Die beste Methode, um einfaches Sortieren/Suchen in Rails zu implementieren

interface example

Derzeit verwende ich Searchlogic, und es ist ein bisschen schmerzhaft. Probleme sind:

  • Sicherstellen, dass bestimmte Operationen orthogonal bleiben - zum Beispiel, wenn Sie „Short Beiträge“ wählen und dann suchen, Ihre Suchergebnisse sollten auf kurze Beiträge zu beschränken.

  • Sicherstellen, dass der richtige Link die Klasse "selected" erhält. Im Moment sind die Links <a> 's, so dass die Aufrechterhaltung dieser Client-Seite ist schwierig. Ich hacks es, indem ich die AJAX-Antwort auf, sagen wir, Sortierung einen neuen Sortier-Links-Abschnitt mit dem richtigen Link "ausgewählt" zurückgeben. Die Verwendung von Optionsfeldern anstelle von <a> Tags würde es einfacher machen, den Zustand clientseitig beizubehalten - vielleicht sollte ich das tun?

Antwort

4

Ich löste vor kurzem ein ähnliches Problem named_scopes und einige Rubin metaprogramming verwenden, die ich in ein Plugin namens find_by_filter aufgerollt.

find_by_filter akzeptiert eine Hash-of scope Namen und Werte, und sie in Ketten parametised Umfang aufruft. Wenn das Modell über einen benannten Bereich verfügt, der dem angegebenen Namen entspricht, wird dies aufgerufen. Wenn kein benannter Bereich gefunden wird, wird ein anonymer Bereich erstellt.

+0

Cool! Behandelt find_by_filter SQL-Injection usw.? –

+0

Parameter sind in Ihren benannten Bereichen gebunden. Wenn Sie damit richtig umgehen, sollten Sie in Ordnung sein. Die Interna sind ziemlich einfach - zögern Sie nicht, die Idee abzuzocken: P. Scopes können zu komplexen Abfragen verkettet werden - das ist der Kern des Ansatzes. Ich validiere auch gegen antizipierte Filteroptionen (mit etwas wie "if accepted.include? (Params [: filter])", wo akzeptiert ist ein Array von akzeptierten Zeichenfolgen. –

Verwandte Themen