Select2自动添加空白值

时间:2015-12-09 19:26:21

标签: ruby-on-rails ruby select2-rails

我正在使用select2作为多重选择器。目前,这是在我的HTML文件中:

 <%= form.select "page_request_set_ids", @multiautocomplete_set_options.unshift(""),
 {}, id: "page-request-sets", multiple: true,
 allowClear: true, data: {placeholder: "Start typing sets..."} %>

@multiautocomplete_set_options是一个字符串数组。 当我稍后访问:page_request_set_ids时,我输入的字符串就在那里,还有一个空字符串。

我尝试删除保留占位符的unshift(""),但未删除:page_request_set_ids中空白字符串的问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

直接取自select documentation

<强>疑难杂症

HTML规范说当多个参数传递给select并且所有选项都被取消选择时,Web浏览器不会向服务器发送任何值。不幸的是,这引入了一个问题:如果用户模型具有许多角色并具有role_ids访问者,并且在编辑用户角色的形式中,用户从role_ids多选框中取消选择所有角色,则不会发送role_ids参数。所以,任何像

这样的质量分配习语
@user.update(params[:user])

不会更新角色。

为了防止这种情况,帮助者在每次多次选择之前生成辅助隐藏字段。隐藏字段与多个选择和空白值具有相同的名称。

注意:客户端要么只发送隐藏字段(表示取消选择的多个选择框),要么只发送两个字段。这意味着结果数组始终包含空字符串。

如果您不希望帮助者生成此隐藏字段,您可以指定include_hidden: false选项。

所以底线是添加:

include_hidden: false

答案 1 :(得分:0)

对我来说问题是我没有将'multiple:true'选项传递给我的erb / haml中的select_tag,并且只在初始化时在select2中设置选项。

确保两个地方都有选项。