ruby-on-rails - rails form_with check_box 不会在页面刷新时呈现对象的值
问题描述
以下形式允许通过 UJS 更改属性,正确呈现 HTML 的返回块
<% @product.productviews.each do |productview| %>
<%= form_with(url: update_productview_products_path(productview_id: productview.id), method: :patch) do |form| %>
<%= productview.active %> <%= form.check_box :active %>
<%= form.submit t('update') %>
<% end %>
<% end %>
类Product
是has_many :productviews
. 上下文:rails 6.1.3
然而,当刷新页面时,check_box 总是设置为 false,尽管属性的值是这样的:
<form action="/products/update_productview?productview_id=1" [...]
true <input name="active" type="hidden" value="0" /><input type="checkbox" value="1" name="active" id="active" />
<form action="/products/update_productview?productview_id=2" [...]
true <input name="active" type="hidden" value="0" /><input type="checkbox" value="1" name="active" id="active" />
<form action="/products/update_productview?productview_id=3" [...]
true <input name="active" type="hidden" value="0" /><input type="checkbox" value="1" name="active" id="active" />
<form action="/products/update_productview?productview_id=4" [...]
false <input name="active" type="hidden" value="0" /><input type="checkbox" value="1" name="active" id="active" />
这是出乎意料的。 Rails 指南指出 Array 参数不能很好地与 check_box 帮助器配合使用。这个实例不是数组参数的情况,虽然它是一个表单数组。
但是切换到<%= form.check_box_tag "active" %>
or<%= form.check_box_tag :active %>
将返回
undefined method `check_box_tag' for #<ActionView::Helpers::FormBuilder:
这似乎又与Rails 指南所声称的相反
check_box 可以在表单数组中使用吗?此复选框如何在页面加载时显示属性的值?
解决方案
您需要将模型传递给表单
<%= form_with(url: update_productview_products_path(productview_id: productview.id), method: :patch, model: productview) do |form| %>
如果这不起作用,您可以将 a 传递checked
到check_box
输入中,但我建议使用第一个选项(如果它有效)
<%= form.check_box :active, checked: productview.active %>
推荐阅读
- node.js - ES2017 NEST JS @IsEmpty 在作为表达式调用时无法解析属性装饰器的签名。此表达式不可调用。不为空
- python - 未生成输出文件
- django - Django Graphene/GraphQL 模型字段级权限的最佳设计
- java - 针对 API 14-17、17-30、30+ 的不同屏幕尺寸调整布局
- java - 如果在 sprig 引导项目中添加了 @EnableTransactionManagement,则 @Aspectj 日志记录问题
- python - 如何根据熊猫中的时间列更改日期列
- tensorflow - 在 Tensorflow 中创建加权 MSE 损失函数
- python - statsmodels.regression.rolling 中的 RollingOLS 可以进行扩展窗口回归吗?
- c# - 在多个线程中过滤 PBFOsmStreamSource
- sql-server - 为什么在 SQL 中更改 nvchar 列的长度时出现“不允许保存更改”?