ruby-on-rails - 简单形式:复选框的值始终为“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">
如何用 替换1
它nil
?
先感谢您。
解决方案
value
属性不是复选框的默认值。如果选中复选框,则此属性作为输入值提交给服务器。
例如
<label>Completed?</label>
<input type="checkbox" value="completed" name="status"
这将作为status=completed
.
要检查复选框是否被选中,请使用checked
JS 中 DOM 节点的属性。
另见 MDN 解释:https ://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#value
推荐阅读
- python - 连接后保留 NaN 值
- wordpress - 在特定页面上启用 wordpress 自动加载选项
- java - Android Studio 中的简单计算器应用程序不断关闭
- triggers - 为什么 Google 跟踪代码管理器自动为我的自定义变量提供 gtm.load 的触发事件?
- python - 如何将numpy代码转换为张量流?
- python - python pandas read_excel engine=openpyxl不关闭文件
- amazon-web-services - 可以将 npm 用于私有包的 AWS CodeArtifact,而所有 npm.org 都与公共包一起使用吗?
- .net - docker 正在运行,但我无法使用 localhost 进行连接
- java - Java - 在 JUnit 测试中不实现 equals 方法的对象的深度比较
- angular - 使用 json server mock 进行角度测试