我正在设置一个formtastic表单,其中许多字段需要选择“select all apply”。 (仅供参考,我使用纤薄但如果需要,我可以将其转换回普通导轨)。
例如。我定义了这个输入:
= f.input :categories_list, :label => _("Commonly Found In"), :as => :check_boxes, :multiple => true, :collection => Category.all
这会创建一堆复选框,只显示存在的复选框。但是,当我选择一个(或两个或三个)时,它会中断我正在创建的模型的创建,并且我注意到categories_list字段提交为:
"categories_list"=>["", "1", "2"],
而不是:
"categories_list"=>["1", "2"],
有谁知道这是为什么?这是一个与formtastic的错误?如果我发布任何更相关的代码,请告诉我。我真的很想知道如何使这项工作。
答案 0 :(得分:4)
这是为了允许清除所有选择。如果没有数组开头的空白/空值,浏览器根本不会设置categories_list
参数,现有的复选框将保持选中状态。
如果未设置categories_list
,则您不知道用户的意图。
你只需要在控制器或模型中的params中过滤掉这个空白选项,如果它不适合你(但我建议你在解除它之前尝试复制编辑问题)。