访问 form_for 个对象的属性

Accessing form_for object's attributes

访问 form_for 中的变量之一时出现错误:

undefined local variable or method `goal'

部分代码如下:

  <%= f.fields_for :goals do |builder| %>
      <%= render 'goal_fields_public', :f => builder %>
  <% end %>

表单代码如下:

= f.fields_for :goals do |goal|
  = render 'goal_fields', f: goal

使用调试标签时,我可以看到@object 中包含我的目标子字段。 表格的填充按预期发生。我期待 goal.objects.name_of_subobject 工作正常,但由于某些原因它没有。

fields_for 将迭代一个集合,因此在每个 goal_fields 实例中,您将拥有一个 goal 表单构建器,您可以访问单个对象,而不是集合.

goal.object.name_of_subobject

编辑:部分内容发布后,您似乎复制了 fields_for 标签,导致代码如下:

f.fields_for :goals do |builder| %>
  builder.fields_for :goals do |goal|
    render 'goal_fields', f: goal

这里有 form_for 标签吗?要么您没有发布我们需要帮助您解决此问题的一半上下文,要么您的表单有很多问题。

(你也在混合 haml 和 erb,为什么?)

您的 'goal_fields' 局部变量可能引用局部变量 goal 而不是 f。如果是这样,您可以按如下方式更改渲染调用:

= render 'goal_fields', goal: goal