Wie kann man bedingt bauen eines ActiveRecord-Abfrage in Rails?
Ich versuche zu bauen, eine Seite mit Suchergebnissen in meiner rails-app (noch noob) und ich kann nicht herausfinden, wie man eine Abfrage erstellen, die Schienen Weg.
Beispielsweise, wenn keine Parameter vorhanden sind, möchte ich alle Ergebnisse zurückgegeben werden. Wenn der Benutzer geht von 1 bis n optionale Parameter in der Suchmaske will ich hinzufügen, um Sie der Abfrage.
Weiter, wenn Sie haben eine Art angegebene "Preis absteigend" oder "year_built desc" oder sogar eine Kombination von beiden.
Endlich mit will_paginate zu trennen, die Ergebnisse
# default to all listings
@listings = Mls.all
@listings.where("listing_price > ?", params[:listing_price]) unless params[:listing_price].blank?
# ... bunch of other search options ...
@listings.where("property_type = ?", params[:property_type]) unless params[:property_type].blank?
# order
@listings.order("some order by param") if some sort param
@listings.order("some order by param") if some other sort param
# paginate results
@listings.paginate(:page => params[:page])
Ist es ein "Schienen" - Weg, dies zu tun?
Sie sollte code einer Schleife und Bereiche
Ich weiß nicht, ob das wirklich eine Antwort auf die Frage, aber has_scope mein problem gelöst ziemlich ordentlich.
Ich weiß nicht, ob das wirklich eine Antwort auf die Frage, aber has_scope mein problem gelöst ziemlich ordentlich.
InformationsquelleAutor chrisan | 2013-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie gesehen, die (revidierte) Railscasts-episode auf die erweiterte Suche? Hier ist der link: http://railscasts.com/episodes/111-advanced-search-form-revised
Die grundlegende Idee ist, erstellen Sie eine
Search
Ressource Prozess der Suche params gesendet durch die form und in den hintergrund sucht über das Modell in Frage (in deinem FallMls
)Diese Weise, anstelle der überprüfung in den controller für die Anwesenheit von bestimmten Parametern (z.B.
params[:listing_price]
) könnte man behandeln, die Bedingungen, die bei Ihrer Suche model (models/Suche.rb):InformationsquelleAutor Andrea Singh
Ein paar links:
Mithilfe von Drittanbieter-Edelsteine (Metasuche)
Code neu
InformationsquelleAutor dimuch