0

我的数据库中有一个名为 property_types 的字段,它有一个字符串值,值可以是“Condo”或“Single Family Home”或“Commercial”。我想在用户的搜索表单中显示每个属性类型,每个属性类型旁边都有一个复选框,以便用户可以选择哪些属性类型应该包含在他们的搜索结果中。

但是,如果 property_type 字段不是布尔值并且它有几个可能的值,我该如何使用 check_box_tag 来做到这一点,它只能有一个 true 或 false 值?

编辑:

我将此复选框代码添加到搜索表单所在的属性/索引并显示搜索结果:

<%= check_box_tag(:condo, value = "1", checked = true) %>

在 properties_controller 我添加了这个:

@properties = @properties.where(:property_type => "Condo") if params[:condo].present?

当然它不起作用,因为我不知道我在做什么,但这是否符合正确的路线?

4

1 回答 1

0

好吧,看看你的要求,我建议你将值保留在trueand false,并且在你的控制器上,当你持久化对象时,你检查所有被选中的可能性 ( true) 并将你的project_types属性放在一起。

project_types += 'condo&' if params[:condo]
project_types += 'commercial&' if params[:commercial]
... 

当然,&我在示例中添加的只是为了演示,因为我不知道您将如何创建此字符串。

编辑:

好吧,也许你应该重构你的模型。我相信如果该project_types属性不存在会更容易,相反,您有几个以字符串命名的布尔属性。然后你可以像这样搜索:

@properties.where(:condo => params[:condo], :commercial => params[:commercial])

并且更容易理解代码。

于 2013-04-25T18:52:11.097 回答