rails返回所有复选框,而不是仅选择一个

时间:2011-05-04 20:45:48

标签: ruby-on-rails checkbox simple-form

我正在使用simple_form并拥有以下示例代码:

<%= f.input :medical_conditions, :label=>false, :collection => medical_conditons, :as => :check_boxes%>

该系列包含约100个复选框。但是,当用户只选择1或2时,所有内容仍然会保存到数据库中,如下所示:

---
- ""
- ""
- ""

medical_conditionsapplication_helper

中的一个简单数组
def medical_conditons
t = [
    "Allergies/Hay Fever",
    "Diabetes",
    "Heart Surgery"]
return t
end

medical_conditions字段是:string字段。

我需要做什么才能以逗号分隔的方式保存所选的值。

2 个答案:

答案 0 :(得分:1)

这不是simple_form行为。它来自Rails。请参阅:http://d.pr/6O2S

答案 1 :(得分:1)

在您的控制器中尝试这样的事情(猜测您如何编写创建/更新方法)...

params[:medical_conditions].delete('') #this will remove the empty strings
@instance.update_attribute(:medical_conditions, params[:medical_conditions].join(','))
#or however you want to save the input, but the key is the .join(',') which will
#create a comma-separated string of only the selected values, which is exactly
#what you're looking for me thinks :-)

如果这对您有用,我会考虑制作一个私有帮助方法,为您设置格式化参数,以便您可以在#create,#update或其他任何需要的地方使用它。这样可以让你的事情变得更清洁一些,并且在你的粗暴行动中更多“铁路方式”。