неопределенный метод `fields_for 'для # <MyModel: 0xc2f8da0> - PullRequest
1 голос
/ 15 декабря 2011

У меня есть 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>

Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 15 декабря 2011

Проблема заключается в том, что вы просто пытаетесь вызвать fields_for для экземпляра класса Author (который является моделью). Метод не определен в модели, это вспомогательный метод, который является частью ActionView .

Попробуйте просто удалить a. и выполните:

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

В документации есть и другие примеры . Это может быть не полный ответ на вашу ситуацию, но в любое время вы получаете undefined method ошибки, проблема очень проста - вы вызываете метод, который не существует ни в области видимости, ни объект, на который ты звонишь Обычно это происходит потому, что вы думаете, что имеете дело с объектом класса x, но на самом деле у вас есть класс y, и вы этого не осознали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...