访问form_for中的一个变量会给出错误:
未定义的局部变量或方法`目标'
部分代码如下:
<%= 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
工作正常,但由于某种原因,它没有。
答案 0 :(得分:1)
fields_for
将迭代一个集合,因此在goal_fields
的每个实例中,您将拥有一个goal
表单构建器,您可以为其访问单个对象,而不是集合。 / p>
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,为什么?)
答案 1 :(得分:1)
您的'goal_fields'部分可能引用了本地变量goal
而不是f
。如果是这样,您可以将您的调用更改为如下所示:
= render 'goal_fields', goal: goal