Поиск в Rails collection_select - PullRequest
0 голосов
/ 28 мая 2009

Я пытаюсь отобразить уникальные округа, перечисленные в моей базе данных, в поле выбора для базы данных свойств. Я понял, как это сделать, но теперь я не могу понять, как получить доступ к выбранному значению выбора. В основном это связано с тем, как выводится имя выбора HTML.

Код моей формы, округ является атрибутом для моей модели недвижимости:

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

Это выводит 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>

Это [] в имени выбора "property [county] дает мне соответствия. Другие элементы в форме поиска используют select_tag, поэтому на выходе получается просто" min_price ", а не" property [min_price] " Это вызывает синтаксическую ошибку, когда я пытаюсь собрать свой массив результатов поиска в моей модели свойств:

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

Из-за проблемы округа перечислены все записи, а не только свойства в этом округе. Получаемая строка URL браузера:

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

Я искал ответы на этот вопрос в течение нескольких дней, и я уверен, что это простой синтаксический метод, который мне нужно использовать при компиляции массива поиска.

Спасибо за любую помощь!

1 Ответ

2 голосов
/ 29 мая 2009

Я думаю, что вы ищете

params[:property][:county]

Всякий раз, когда вы видите имя типа xxx[yyy], Rails автоматически создает хэши в объекте params для вас, к которым сначала обращаются с помощью ключа xxx, а затем ключа yyy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...