You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 6.1 edit表单渲染为空 数据库已有值未加载问题求助

问题原因

你手动为所有表单输入项指定了value为params对应参数值,覆盖了form_with绑定model后默认填充的数据库存储值。
正常使用form_with(model: task)绑定实例对象时,Rails会自动读取task实例对应字段的内容填充到表单输入项中,不需要手动指定value属性。你访问编辑页时params里不存在title、description这类字段值,所以所有表单项被强制赋值为空。

修复方案

  1. 删除所有表单输入控件中的:value => params[:xxx]声明,修改后各表单项代码示例如下:
<div class="form-group">
  <%= form.label :title %>
  <%= form.text_field :title, class: "form-control", prepopulated: "true" %>
</div>

<div class="form-group">
  <%= form.label :description %>
  <%= form.rich_text_area :description, data: { controller: "mentions", mentions_target: "field" }, class: "form-control" %>
</div>

<div class="form-group">
  <%= form.label :credits %>
  <%= form.number_field :credits, class: "form-control" %>
</div>

<div class="form-group">
  <%= form.label :category %>
  <%= form.select :category,  [ 'Development', 'Design' ], class: "form-control" %>
</div>
  1. 额外修正关联复选框的强制选中逻辑:你当前在collection_check_boxes里强制写了checked: true,会导致编辑时无论原有关联的用户是什么,都会默认选中ID为1的用户,如果需要保留原有绑定的关联关系,删除checked: true即可:
<%= u.label(class: "check_box") { u.check_box(class: "add_margin") + u.text } %>

补充说明

不需要担心表单提交失败的回显问题:如果更新校验失败渲染编辑页时,form.object对应的@task实例已经携带了提交的参数值,Rails会自动完成回显,不需要手动绑定params的值。

内容的提问来源于stack exchange,提问作者malditojavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 05:51:01