【问题标题】:having trouble understanding :multiple => true in a checkbox无法理解 :multiple => true 在复选框中
【发布时间】:2016-02-05 07:22:58
【问题描述】:

我是 Ruby on Rails 的新手,我继承了对基于 Ruby/Rails Web 的数据库(由另一个创建)的控制,用于生成和跟踪工程功能。我使用 Aptana IDE。

我的问题是我正在尝试使用表单助手为我们的“产品线”选择多个值。我使用了 10 个复选框,如果我不使用“:multiple => true”,我会得到一个值的正确输出。

查看输出图像:

按预期工作

<%= f.check_box :product_line, {:class => "field"}, "A9", false %> A9

(“A9”所在的值不同的10次,所以总共有十个复选框,图像显示“A7”复选框返回)

通过简单地添加 :multiple => true,输出会发生如下变化:

查看输出图像:

回报太多

<%= f.check_box :product_line, {:class => "field", :multiple => true}, "A9", false %> A9

为什么只有在进行多选时才会在输出之前添加所有这些“-”?我希望它只返回复选框的逗号分隔值,即“A9,A7”

PRODUCT_LINES = [ "A9", "A7", "AG", "AF", "S3", "Legacy", "K/Kpro", "EMW", "HD", "Non-Metallic" ]

其他想法: 我可以循环遍历 :product_line 数组来获取我正在寻找的东西吗? 我也在玩下拉菜单中的多项选择,但在下拉菜单返回之前永远无法选择第二个选项,并且只选择了我的第一个选项。

【问题讨论】:

  • 我向你的热情兄弟致敬。您正在 Windows 机器上进行 Rails 开发。

标签: ruby-on-rails ruby checkbox multipleselection


【解决方案1】:

为什么只有多个“-”才会在输出之前添加 做出选择了吗?

the docs (read the Gotcha) 开始,当 multiple 设置为 true 时,所有选择都将存储在 product_lines 数组中,但未选中的复选框也将在发送的参数中保留为空字符串,因此您看到的结果 product_lines 将是类似:

product_lines = ["", "", "", "A9", "A7"]

我可以循环遍历 :product_line 的数组来得到我想要的吗 代替?

嗯,实际上这让我们直接解决了在代码中使用multiple: true 的问题。

上面 (1) 中解释的过程是 check_box_tag 的设计方式,您看到的问题可能在您的 ECN#show 中。没有审查代码,我只是猜测,但通常是这样的:

<%= @ecn.product_lines.join('-') %>

应该是

<%= @ecn.product_lines.reject(&:blank?).join(',') %>

其中:reject(&amp;:blank?) 删除空字符串,然后根据需要使用逗号加入

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2021-09-04
    • 2013-07-20
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多