Я строю многоуровневую форму в рельсах 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>