ruby-on-rails - Rails 无法保存未选中的复选框
问题描述
我刚刚注意到,当用户尝试删除表单上的检查时,它实际上并没有维护状态。
我的表单如下所示(使用 Slim)
=f.tb_label :marketing_systems
=hidden_field_tag 'course_group[marketing_systems][]', nil
.col-sm-10
.multi-select
table
tbody
-MarketingSystem.ordered.each do |system|
-input_name = "course_group_marketing_system_#{system.id}"
tr
td = check_box_tag 'course_group[marketing_system_ids][]',
system.id,
@course_group.marketing_systems.include?(system),
id: input_name
我想在隐藏标签字段上设置一个 nil ,它会在为空时推动它。然而事实并非如此。我的 check_box_tag 设置有问题吗?
我尝试将参数放在括号中,然后在 check_box_tag 上放置checked = false,但这没有用。如果我添加 value = 0 那么它会引发一个参数太多的问题。如果未选中,我只是想通过删除 system.id 来更新数据。
解决方案
改用就好collection_check_boxes
了。
= form_for(@course_group) do |f|
.col-sm-10
.multi-select
table
f.collection_check_boxes(:marketing_systems, :id, :name) do |b|
tr
td
= b.label
td
= b.check_box
推荐阅读
- python - 具有嵌套 for 循环、条件和累加器的列表理解
- javascript - 在 Vue.js 中渲染双花括号 {{ }} 内的元素
- gitlab - Gitlab:无法使用 URL 下载工件
- python - Python pipenv 无法导入'matplotlib.pyplot'
- c# - 使用 C# HttpListener 时无法设置 MIME 类型
- python-3.x - 使用 os 模块返回位于 Python 中当前工作目录正上方的目录名称
- python - 属性实例的 Django ListView
- ios - iOS:以编程方式捕获大于屏幕的视图屏幕截图
- html - 如何使背景颜色占据屏幕/页面的整个高度?
- flask - 如何在Flask中请求最后一段url