Создание вложенной модели формы - PullRequest
4 голосов
/ 02 января 2011

Я пытаюсь создать многомодальную форму, но одна из проблем заключается в том, что мне нужно связать модели в форме.

Например, предположим, что у меня есть форма, имеющая следующие модели: Пользователи, Профили

При создании нового пользователя я хотел бы создать новый профиль одновременно, а затем связатьдва.Проблема в том, что если ни один из них еще не создан, у них еще нет идентификаторов - так как я могу назначить значения ссылок?

Спасибо!

-Elliot

Iзаметил, что некоторые люди одобряют это - чтобы узнать больше о связывании двух моделей, посмотрите мой второй вопрос, на который есть ответ: Связывание двух моделей в форме нескольких моделей

1 Ответ

5 голосов
/ 02 января 2011

Одним из способов достижения желаемого результата является то, что вы можете создать форму, использующую преимущества поддержки вложенных атрибутов в Rails:

<%= form_for(@user) do |f| %>
  <%= f.label :my_user_attribute %>
  <%= f.text_field :my_user_attribute %>

  <%= f.fields_for :profile do |fp| %>
    <p>
      <%= fp.label :my_profile_attribute %>
      <%= fp.text_field :my_profile_attribute %>
    </p>
  <% end %>    

  <%= f.submit %>
<% end %>

Вам также необходимо добавить в свой класс пользователя следующее:

accepts_nested_attributes_for :profile

Подробнее о вложенных атрибутах Active Record можно узнать здесь . Вы можете прочитать больше о помощниках формы ActionView здесь (поиск по странице "Примеры вложенных атрибутов").

Если вы используете этот подход, наряду с хорошими проверками в обеих моделях, вам не придется беспокоиться об отслеживании идентификаторов базы данных, поскольку ActiveRecord будет одновременно создавать обе (но не до тех пор, пока оба объекта модели не будут действительными). ).

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