简单表单:复选框的值始终"1"



我有一个表单,需要添加一个GDPR复选框。

如果复选框被选中(=勾选),复选框的值应该是true(或1)。如果不是,则该值应为false(或可能为nil)。

我是这样渲染复选框的:

= f.input :gdpr, as: :boolean, required: true, label: false, checked_value: true, unchecked_value: false, input_html: { }

然而,当我查看生成的HTML时,我看到(可能)默认情况下复选框的值是1-这怎么可能?

编辑:这是呈现的HTML:

<input name="obj[gdpr]" type="hidden" value="open">
<input required="required" aria-required="true" type="checkbox" value="true" name="obj[gdpr]" id="obj_gdpr">

如何用nil代替1?

提前谢谢你。

value属性不是复选框的默认值。如果复选框被选中,该属性将作为输入值提交给服务器。

<label>Completed?</label>
<input type="checkbox" value="completed" name="status">

这将作为status=completed提交。

在JS中使用DOM节点的checked属性来检查复选框是否被选中。

也见MDN解释:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#value

最新更新