访问form_for对象的属性

时间:2016-03-11 17:02:50

标签: ruby-on-rails forms cocoon-gem

访问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工作正常,但由于某种原因,它没有。

2 个答案:

答案 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