【问题标题】:Select2 automatically adding blank valueselect2 自动添加空白值
【发布时间】:2015-12-09 19:26:21
【问题描述】:

我将 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中的空白字符串问题。

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    直接取自selectdocumentation

    遇到问题

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

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

    不会更新角色。

    为了防止这种情况,助手在每次多选之前生成一个辅助隐藏字段。隐藏字段与多选和空白值同名。

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

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

    所以底线是添加:

    include_hidden: false

    【讨论】:

      【解决方案2】:

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

      确保您在这两个地方都有选择。

      【讨论】:

        猜你喜欢
        • 2015-05-22
        • 1970-01-01
        • 1970-01-01
        • 2018-12-17
        • 2022-07-26
        • 2020-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多