Метод построителя форм Rails fields_for позволяет вкладывать атрибуты для нескольких записей.Эта часть вашего кода выглядит правильно (при условии, что ваши партиалы работают).Вы можете сделать вашу строку fields_for более явной, построив связь с целевым объектом следующим образом:
<%= f.fields_for :milestones, @goal.milestones.build do |ff| %>
<%= render 'shared/milestone_fields', :f => ff %>
<% end %>
Убедитесь, что ваши модели имеют следующий код для обработки параметров, которые будут переданы каждому изэти модели:
# app/models/goal.rb
has_many :milestones
has_many :tasks
accepts_nested_attributes_for :milestones
accepts_nested_attributes_for :tasks
# app/models/milestone.rb
has_many :tasks
accepts_nested_attributes_for :tasks # For tasks on milestones
Также убедитесь, что если вы используете attr_accessible для блокировки атрибутов вашей модели из массового назначения, эти записи имеют соответствующие записи (milestones_attributes, tasks_attributes и т. д.)
Когда вы отправляете форму, посмотрите журнал разработки рельсов и убедитесь, что параметры отображаются в формате, подобном следующему:
{: goal => {: milestones_attributes => {: tasks_attributes => {},: tasks_attributes => {}}}
Если все эти данные обрабатываются, но запись все еще не сохраняется, проверьте в журнале записи «ROLLBACK», которые могут указывать, что запись не являетсядопустимый и не может быть вставлен.
Более подробную информацию о nested_attributes можно найти здесь: http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html
Информацию о помощниках формы, использующих эти вложенные атрибуты, можно найти здесь: http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for