Шаблон презентатора здесь не обязательно подходит лучше всего.
Вы, вероятно, получите еще больше, просто используя accepts_nested_attributes_for
:
# Models
class Job < ActiveRecord::Base
has_many :tasks, :autosave => true
accepts_nested_attributes_for :tasks
end
class Task < ActiveRecord::Base
belongs_to :job
has_many :notes, :autosave => true
accepts_nested_attributes_for :notes
end
class Note < ActiveRecord::Base
belongs_to :task
end
А затем в своей форме выполнитечто-то вроде (в HAML):
= form_for @job do |job|
= job.text_field :name # or whatever your Job attributes are
= job.fields_for :tasks do |task|
= task.text_field :name
= task.check_box_field :complete
= task.fields_for :notes do |note|
= note.text_field :body
= job.submit "Create Job"
Возможно, вам придется инициализировать некоторые задачи / заметки для новых заданий, или связанные формы записей могут не отображаться.Например, сделайте что-то вроде 3.times { @job.tasks.build }
, чтобы создать 3 пустых задания (и, следовательно, отобразить форму задачи 3 раза).