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

Rails嵌套表单场景下如何访问关联记录的属性?

问题原因

你代码中使用的@day是未定义的实例变量,控制器的new方法中没有对其赋值,自然返回nil。

解决方案

Rails的表单构造器fields_for在遍历关联集合时,每个迭代项对应的实例对象可以通过表单构造器的object属性直接获取,同时如果需要提交嵌套参数,需要额外添加隐藏字段携带name的值,否则后端无法正常保存关联的day记录。
修改后的表单代码如下:

<%= form_with model: @availability, local: true, url: { action: "create" } do |form| %>
  <%= form.fields_for :days do |day_form| %>
    <h2><%= day_form.object.name %></h2>
    <%# 隐藏字段用于提交name参数,不需要可以删除 %>
    <%= day_form.hidden_field :name %>
  <% end %>
  <%= form.button :submit %>
<% end %>

代码说明

  • 移除了fields_for的第二个参数@day,Rails会自动遍历@availability关联的所有day实例,逐个生成对应的表单块
  • day_form.object可以直接拿到当前表单块对应的day实例,调用name属性即可获取值
  • 新增的hidden_field会将name作为隐藏参数提交,如果你不需要后端保存day的name属性可以删除该行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:06:08