如何允许用户从 rails 的多选框中选择零个选项?

Sim*_*mon 5 ruby ruby-on-rails multiple-select

我有一个带有列的设置模型options,并将其设置为与serialize :options. 在我看来,我有一个多选框,select("settings", "options", ['option1','option2','option3'], {}, :multiple => true)只要用户至少选择一个选项,就可以使用它。但是,如果他们不选择任何选项,则不会提交任何选项,因此不会更新选项。

如何允许用户从 rails 的多选框中选择零选项?

Sea*_*ary 2

如果未发布属性,我不喜欢假设值为空。它破坏了 Rails 期望更新属性的方式,并且如果您将控制器操作也用于 API 和 HTML,则可能会出现问题。我处理此问题的首选方法是在多选之前添加隐藏的输入字段。

<input type="hidden" value="" name="parent_model[my_attribute_ids][]">
Run Code Online (Sandbox Code Playgroud)

如果您使用 JQuery,您可以自动添加这些隐藏的输入字段:

$('select[multiple="multiple"]').each(function(i){
    $(this).before('<input type="hidden" name="'+this.name+'" value="" />')
});
Run Code Online (Sandbox Code Playgroud)

我知道这个答案不是很及时,但我希望这对有类似问题的人有所帮助。