Вложенные формы в рельсах 3.1 - PullRequest
3 голосов
/ 20 сентября 2011

У меня проблема с вложенными формами: rails 3.1 не отображает поля fields_for, когда это необходимо (например, при редактировании существующей записи).Так как я недостаточно уверенно говорю по-английски, я сделал небольшой пример приложения:

Новое действие:

def new
  @manga = Manga.new
  3.times {@manga.volumes.build}
end

Код формы:

<%= form_for @manga do |f| %>
  <%= f.error_messages %>
  <p>
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </p>
  <% f.fields_for :volumes do |builder| %>  
  <p>  
    <%= builder.label :cover_link, "Link to cover" %><br />  
    <%= builder.text_field :cover_link %>  
  </p>  
  <% end %>  
  <p><%= f.submit %></p>
<% end %>

В Rails 3.0 результирующая форма выглядит точно так же, как и .(Хорошо, поэтому я не могу публиковать изображения. Поэтому я должен вместо этого поместить их в виде ссылок.) Но в rails 3.1 результат отличается .

Я, вероятно, также должен отметить, чтоУ меня нет проблем со сбережениями и с тем, что задают большинство подобных вопросов.Все отлично сохраняется, когда поля добавляются с помощью JS из Railscast 197. Главная проблема здесь в том, что все сохраненное невозможно редактировать.

1 Ответ

4 голосов
/ 21 сентября 2011

И после того, как я притаился, я обнаружил, что мой вопрос не сильно отличается от других.

Устаревший способ вызова fields_for был ошибкой.

Тот факт, что данные были сохранены (и поля были добавлены) через JS, вводит меня в заблуждение. Решение было довольно простым:

not `<% fields_for %>`, but `<%= fields_for %>`
...