我有一个表单,需要添加 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">
如何将
1
替换为 nil
?
提前谢谢您。
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