Ruby on rails 选中“复选框”标记不';如果未选中,则无法传递任何参数

Ruby on rails 选中“复选框”标记不';如果未选中,则无法传递任何参数,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,如果选中了复选框标记,我试图在控制器中使用if-else语句来执行某些操作,如果未选中,则执行其他操作 <%= check_box_tag "apply[]", 1, false %> 如果选中并提交表单,“apply”=>[“1”]将作为参数传递,如果未选中,则不会发送任何内容 如果未选中,“apply”=>[“0”]是否可以作为参数传递?rails指南中有一个关于这种特殊情况的警告框: 数组参数不能很好地与复选框辅助对象配合使用。相符合的 对于未选中的HTML规范复选框,

如果选中了
复选框标记
,我试图在控制器中使用if-else语句来执行某些操作,如果未选中,则执行其他操作

<%= check_box_tag "apply[]", 1, false %>

如果选中并提交表单,
“apply”=>[“1”]
将作为参数传递,如果未选中,则不会发送任何内容


如果未选中,
“apply”=>[“0”]
是否可以作为参数传递?

rails指南中有一个关于这种特殊情况的警告框:

数组参数不能很好地与复选框辅助对象配合使用。相符合的 对于未选中的HTML规范复选框,不提交任何值

但是,复选框通常可以方便地始终提交 价值复选框助手通过创建一个隐藏的辅助项来假装这一点 输入相同的名称。如果复选框未选中,则仅隐藏 提交输入,如果选中,则提交两个输入,但 复选框提交的值优先。工作时 使用数组参数,此重复提交将混淆Rails 因为重复的输入名称是它决定何时开始新输入的方式 数组元素。最好使用复选框标记或使用 散列而不是数组


实际上,
复选框标记
在复选框未选中的情况下不会发送任何内容(与
复选框
帮助程序不同,它在数组参数的情况下仍然不有用,正如Meier在上面所指出的)

如果您试图以与中类似的方式使用复选框(例如,发送用户选择的ID数组),简单的解决方案可能是对控制器中的空参数作出反应。在以下方面:

params[:apply] ||= []

另一方面,如果您希望将复选框用作有序数组,其中每个值都将由其在数组中的常量位置确定(真或假)(即,如果您希望在
apply
param:
[0,1,0,0,1]
)中获得类似的内容,这将不起作用。您必须选择一种不同的方法,例如,使用带有哈希参数的复选框而不是数组。

这一行让我感到困惑:“最好使用复选框标记,或者使用哈希而不是数组。”我觉得它说最好使用
复选框标记
,因为它将为选中和未选中的两个对象发送一个参数。但它不。。。