我正在使用simple_form
并拥有以下示例代码:
<%= f.input :medical_conditions, :label=>false, :collection => medical_conditons, :as => :check_boxes%>
该系列包含约100个复选框。但是,当用户只选择1或2时,所有内容仍然会保存到数据库中,如下所示:
---
- ""
- ""
- ""
medical_conditions
是application_helper
def medical_conditons
t = [
"Allergies/Hay Fever",
"Diabetes",
"Heart Surgery"]
return t
end
medical_conditions
字段是:string
字段。
我需要做什么才能以逗号分隔的方式保存所选的值。
答案 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或其他任何需要的地方使用它。这样可以让你的事情变得更清洁一些,并且在你的粗暴行动中更多“铁路方式”。