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.

InformationsquelleAutor chrisan | 2013-01-05

Schreibe einen Kommentar