如何将check_box_tag用于不是布尔值的值?

时间:2013-04-25 18:35:34

标签: ruby-on-rails

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

但是如果property_type字段不是布尔值并且它有几个可能的值我如何使用check_box_tag来执行此操作,而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?

当然它没有用,因为我不知道我在做什么,但是这是否正确?

1 个答案:

答案 0 :(得分:0)

好吧,看着你的要求我建议你把值保留在truefalse,并且在控制器上,当你持久保存对象时,你会检查所有被检查的可能性({ {1}})并将true属性放在一起。

project_types

当然,我在示例中添加的project_types += 'condo&' if params[:condo] project_types += 'commercial&' if params[:commercial] ... 仅用于演示,因为我不知道如何创建此字符串。

编辑:

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

project_types

理解代码会更容易。