Итак, это некоторый код, который я извлек из аналогичного приложения (Rails 3 + DataMapper + dm-acceptpts_nested_attributes + Haml). В моем примере у меня есть медицинская практика, которая имеет много administrator_practices и имеет много администраторов через administrator_practices. Вот соответствующая часть модели:
has n, :administrators_practices
has n, :administrators, :through => :administrators_practices
accepts_nested_attributes_for :administrators
Тогда, на мой взгляд, у меня есть что-то вроде этого:
%h1 Practice Setup
%ol
= form_for @practice do |f|
%li
= f.label :name
= f.text_field :name
= f.fields_for :administrators do |administrator_builder|
%li
= administrator_builder.label :name, "Administrators Name"
= administrator_builder.text_field :name
%li
= administrator_builder.label :email
= administrator_builder.text_field :email
%li
= administrator_builder.label :password
= administrator_builder.password_field :password
Это должно сработать. Хитрость заключается в том, чтобы использовать fields_for и создать новый конструктор форм. Затем вы можете рассматривать его в основном как часть основной модели.
Если вы застряли, вы можете разбить на части. Когда я учился собирать подобные вещи, я сначала работал над моделью, а затем пытался создать там вложенную модель. Затем я построил бы свои представления и запустил отладчик внутри моего контроллера, чтобы убедиться, что я получаю правильную информацию внутри объекта params. Иногда я мог достаточно поиграть с параметрами, чтобы увидеть, как это должно быть, а затем вернуться назад и обновить свои представления, чтобы правильно построить форму.