Ответ:
Достаточно 1-го контролера - TasksController.
В модель добавляем параметр "accepts_nested_attributes_for", который при создании объекта передает дополнительные параметры.
class Task < ActiveRecord::Base
has_many :subtasks, class_name: 'Task', foreign_key: "parent_id"
belongs_to :parent, class_name: 'Task'
accepts_nested_attributes_for :subtasks, allow_destroy: true
belongs_to :user
belongs_to :project
end
В контроллер добавляем дополнительные атрибуты для подзадачи:
def task_params
params.require(:task).permit(:title, :description, :priority, :status, :scheduled, :deadline, subtasks_attributes: [:title])
end
Сама же форма для создания подзадач выглядит так:
<%= simple_form_for @task do |t| %>
<%= t.simple_fields_for :subtasks, @task.subtasks.build do |f| %>
<div class="form-inputs">
<%= f.input :title %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
<% end %>