2016-03-11 130 views
1

訪問中的form_for的變量之一給我的錯誤:訪問的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工作正常,但由於某種原因,它不。

+0

您將添加代碼爲您的「goal_fields」部分? – sebsonic2o

+0

您顯示的代碼沒有任何問題,並且沒有任何內容會導致該錯誤。查看錯誤並查看它來自的文件和行,並將該代碼添加到您的問題中。 – smathy

+0

已更新,部分代碼 – kaboom

回答

1

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和僱員再培訓局,爲什麼?)

+0

是的,我的邏輯正好。問題是,它是未定義的 – kaboom

+0

@kaboom你的文章陳述'objects'不是'object' - 你確定嗎? – Matt

+0

雙重檢查,對象爲單數 – kaboom

1

你 'goal_fields' 部分可能會被引用的局部變量goalf。如果是這樣,你可以改變你的呼叫呈現如下:

= render 'goal_fields', goal: goal