我是Ruby on Rails的新手,我继承了对Ruby / Rails基于Web的数据库(由另一个创建)的控制,以生成和跟踪工程功能。我使用Aptana IDE。
我的问题是我正在尝试使用表单助手为我们的"产品系列选择多个值"。我使用10个复选框,如果我不使用"我得到一个值的正确输出:multiple =>真&#34 ;.
参见输出图像:
按预期工作
<%= f.check_box :product_line, {:class => "field"}, "A9", false %> A9
(10次使用不同的值,其中&#34; A9&#34;是,因此共有10个复选框,图像显示&#34; A7&#34;返回复选框)
只需添加:multiple =&gt;是的,输出会发生变化,如下图所示:
见输出图像:
返回太多
<%= 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数组来获取我正在寻找的内容吗? 我也在下拉菜单中玩多项选择,但在下拉菜单返回之前永远不会选择第二个选项,只选择了我的第一个选项。
答案 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?)
删除空字符串,然后根据需要加入逗号
希望这有帮助!