理解困难:multiple =>复选框

时间:2015-11-04 17:13:50

标签: ruby-on-rails ruby checkbox multipleselection

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

我的问题是我正在尝试使用表单助手为我们的"产品系列选择多个值"。我使用10个复选框,如果我不使用"我得到一个值的正确输出:multiple =>真&#34 ;.

参见输出图像:

no multiple select

按预期工作

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

(10次使用不同的值,其中&#34; A9&#34;是,因此共有10个复选框,图像显示&#34; A7&#34;返回复选框)

只需添加:multiple =&gt;是的,输出会发生变化,如下图所示:

见输出图像:

multiple select

返回太多

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

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

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

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

1 个答案:

答案 0 :(得分:0)

  

为什么所有这些“ - ”仅在输出之前添加“ - ”   选择是什么?

the docs (read the Gotcha)当多个设置为true时,所有选择都将存储在product_lines数组中,但未选中的check_box也将保留为已发送的pararms中的空字符串,以便您看到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(&:blank?)删除空字符串,然后根据需要加入逗号

希望这有帮助!