2009-05-28 5 views
0

Ich versuche, eindeutige Landkreise in meiner Datenbank in Auswahlfeld für eine Eigenschaftendatenbank angezeigt. Ich habe herausgefunden, wie das geht, aber jetzt kann ich nicht herausfinden, wie ich auf den ausgewählten Wert der Auswahl zugreifen kann. Dies hat hauptsächlich damit zu tun, wie der HTML-Select-Name ausgegeben wird.Rails collection_select search issue

Meine Form Code, Kreis ist ein Attribut für mein Eigentum Modell:

<%= collection_select(:property, :county, @Counties, :county, :county, {:prompt => true}) %> 

Das gibt die HTML

<select id="property_county" name="property[county]"><option value="">Please select</option> 
<option value="Pearl River">Pearl River</option> 
<option value="Marion">Marion</option> 
<option value="Stone">Stone</option> 
<option value="Lamar">Lamar</option> 
<option value="Forrest">Forrest</option> 
<option value="Jones">Jones</option> 
<option value="Washington">Washington</option></select> 

Es ist die [] 's im select namen „Eigenschaft [Kreis ] Die anderen Elemente im Suchformular verwenden select_tag, so dass die Ausgabe einfach "min_price" statt "property [min_price]" ist. Dies verursacht einen Syntaxfehler, wenn ich versuche, meine Suchergebnisse zusammenzustellen Array in meinem Eigenschaftsmodell:

def self.find_by_lcc(params) 
where = [] 
unless params[:mls].blank? 
where << "mls = :mls" 
end 
unless params[:county].blank? 
where << "county = :county" 
end 
unless params[:min_acreage].blank? 
where << "acreage >= :min_acreage" 
end 
unless params[:max_acreage].blank? 
where << "acreage <= :max_acreage" 
end 
unless params[:min_price].blank? 
where << "price >= :min_price" 
end 
unless params[:max_price].blank? 
where << "price <= :max_price" 
end 

if where.empty? 
[] 
else 
find(:all, 
:conditions => [where.join(" AND "), params], 
:order => "city, price desc") 
end 

Aufgrund des Bezirksproblems werden alle Datensätze aufgelistet und nicht nur die Eigenschaften innerhalb dieses Bezirks. Der Browser-URL-Zeichenfolge Ich erhalte ist:

public/land?mls=&property[county]=Stone&min_acreage=0&max_acreage=16000000&min_price=0&max_price=1600000&commit=Search 

Ich habe nach Antworten auf diese für ein paar Tage gesucht und ich bin sicher, es ist eine einfache Syntax Methode, die ich bei der Zusammenstellung meiner Suche Array verwenden muß.

Danke für jede Hilfe!

Antwort

2

Ich glaube, Sie suchen

params[:property][:county] 

Jedes Mal, wenn Sie einen Namen wie xxx[yyy] sehen, Rails baut automatisch Hashes im params-Objekt für Sie, die mit Schlüssel xxx zuerst zugegriffen wird, dann Taste yyy.

Verwandte Themen