Я создаю многоуровневую форму в rails 3. Я использую гем formtastic_cocoon, но не думаю, что это имеет большое значение для этой проблемы.
У меня есть пользователи, у пользователей есть задачи, у задач есть шаги. Вложенность: пользователи> задачи> шаги. Я могу динамически добавлять и удалять поля задач для пользователя и поля шагов из задач.
Однако, когда я отправляю форму, пользователь получает задачи, но шаги задачи> не сохраняются в базе данных.
Rails не возвращает никаких ошибок, просто ничего не происходит.
Мои модели
Class User < ActiveRecord::Base acts_as_authentic has_many :tasks accepts_nested_attributes_for :tasks, :reject_if=> proc {|attributes| attributes[:entry].blank?}, :allow_destroy => true end Class Task < ActiveRecord::Base attr_accessible :entry belongs_to :user has_many :steps accepts_nested_attributes_for :steps, :reject_if=> proc {|attributes| attributes[:title].blank?}, :allow_destroy => true end Class Step < ActiveRecord::Base attr_accesible :title belongs_to :task end
В моем form.html.erb у меня есть
<%= semantic_form_for @user %> <%= form.inputs :username, :password %> <div> <% form.semantic_form_fields_for :tasks do |builder| %> <%= render 'task_fields', :f=>builder %> <% end %> <%= link_to_add_association 'add task', form, :tasks %> </div>
_Task_fields.html.erb выглядит так
<div class="nested-fields"> <%= link_to_remove_association "remove task", f %> <%= f.inputs :entry %> <div> <% f.semantic_form_fields_form :steps do |builder| %> <%= render 'step_fields' :f => builder %> <% end %> <%= link_to_add_association 'add step', f, :steps %> </div> </div>
наконец, страница _step_fields.html.erb
<div class="nested-fields"> <%= link_to_remove_association "remove step", f %> <%= f.inputs :title %> </div>