我的模型中有3级层次结构,例如
发布商[有很多] - >作者[有很多] - >书
以我的形式, 我有以下结构
<%= 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 :(得分:1)
问题只是你试图在fields_for
类的实例(这是一个模型)上调用Author
。该方法未在模型上定义,它是ActionView的一部分辅助方法。
尝试简单地删除a.
并执行:
<%= fields_for a.books.build, :books do |b| %>
...
<% end %>
the documentation中有更多示例。这可能不是您的情况的完整答案,但任何时候你得到undefined method
错误,问题是非常直接的 - 你正在调用范围或对象中不存在的方法在你打电话的时候。通常会发生这种情况,因为您认为自己正在处理类x
的对象,但实际上您已经有了y
课,而您却没有意识到这一点。