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

Rails中simple_form嵌套属性输入字段不显示问题求助

嘿,我帮你看了下代码,发现几个可能导致嵌套评论字段不显示的问题,咱们一步步来解决:

1. 编辑页面未初始化嵌套的评论对象

你在new动作里已经加了@incident.comments.build,所以新建事件时应该能渲染字段,但编辑页面(edit动作)是空的——如果要编辑的事件还没有任何评论,simple_fields_for :comments找不到关联的对象,自然不会渲染输入框。

修改incidents_controller.rb里的edit方法:

def edit
  # 若当前事件没有评论,就新建一个空评论供表单渲染
  @incident.comments.build if @incident.comments.empty?
end

2. 嵌套属性参数权限需要补充

如果之后需要更新已有的评论,你的incident_params里没有允许comments_attributes的:id字段,这会导致系统无法识别要更新的评论记录。建议补充上,同时如果需要支持删除评论,也可以加上:_destroy:

def incident_params
  params.require(:incident).permit(
    :info, :subject, :status,
    comments_attributes: [:id, :info, :_destroy]
  )
end

3. 关于reject_if的小提示

你设置的reject_if: proc { |attributes| attributes['info'].blank? }是用来过滤提交时空评论的,这个逻辑本身没问题,但如果在测试时发现新建页面也不显示字段,可以暂时注释掉这个条件排查(不过正常情况下,new动作里构建的空对象应该能被渲染,这个只是兜底排查点)。

额外验证点

  • 访问/admin/incidents/new页面试试,这里已经有@incident.comments.build,应该能看到评论输入框;
  • 查看页面的HTML源代码,确认是否生成了评论相关的表单字段(如果生成了但看不见,可能是CSS隐藏了,但从截图看应该是根本没生成)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:27:50