2011-12-15 66 views
1

我在我的模型3級層次結構如未定義的方法`fields_for」爲#<爲MyModel:0xc2f8da0>

出版商[有許多] - >作者[有許多] - >圖書

在我形式, 我有以下結構

<%= form_for(@publisher) do |p| %> 
    ... 
    <%= p.fields_for @publisher.authors.build, :authors do |a| %> 
    ... 
    <%= a.fields_for a.books.build, :books do |b| %> 
     ... 
    <% end %> 
    <% end %> 
<% end %> 

它引發以下錯誤

undefined method `fields_for' for #<Author:0xc2f8da0> 

任何幫助將不勝感激。

+0

您是否在模型中設置了accep_nested_attributes_for? – cjm2671 2011-12-15 14:30:12

+0

是的,得到他們在這兩個模型 – 2011-12-16 11:08:37

回答

1

問題很簡單,你正試圖在Author類(這是一個模型)的實例上調用fields_for。該方法未在模型中定義,它是ActionView的一部分的幫助方法。

嘗試簡單地刪除a.做:

<%= fields_for a.books.build, :books do |b| %> 
    ... 
<% end %> 

有在the documentation更多的例子。這可能不是您的情況的完整答案,但只要您遇到錯誤,這個問題就非常簡單 - 您調用的方法不存在於範圍中,也不是您存在的對象,重新叫它。通常發生這種情況是因爲你認爲你正在處理一個類x的對象,但是你真的得到了類y並且你沒有意識到它。

相關問題