我正在尝试在属性数据库的选择框中显示我的数据库中列出的唯一县。我已经想出了如何做到这一点,但现在我无法弄清楚如何访问选择的选定值。这主要与HTML选择名称的输出方式有关。
我的表单代码,county是我的属性模型的属性:
<%= 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]“当我尝试将我的搜索结果数组放在我的Property模型中时,这会导致语法错误:
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
我已经在这里搜索了几天的答案,我确信这是我在编译搜索数组时需要使用的一种简单的语法方法。
感谢您的帮助!
答案 0 :(得分:2)
我认为你在寻找
params[:property][:county]
每当您看到xxx[yyy]
这样的名称时,Rails会自动为params对象构建哈希值,这些哈希值首先使用密钥xxx访问,然后是密钥yyy。