我有一个表单,需要添加一个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