у меня 2 модели
1) Проект
class Project < ActiveRecord::Base
has_many :tasks
accepts_nested_attributes_for :tasks
validates :priority, presence: true
validates_date :due_date, :after => lambda {Date.current}
validates_length_of :name, minimum: 5, maximum: 40
validates_length_of :description, minimum: 10, maximum: 200
end
2) Задачи (которые относятся к проекту)
class Task < ActiveRecord::Base
belongs_to :project, dependent: :destroy
validates_length_of :name, minimum: 3, maximum: 50
end
Мой контроллер:
def create
@project = Project.new(project_params)
@project.save!
redirect_to projects_path
end
def new
@project = Project.new
respond_to do |format|
format.html
format.js
end
def project_params
params.require(:project).permit(:name, :description, :due_date, :priority,
tasks_attributes: [:name])
end
Когда я нажимаю кнопку отправки в форме, я вижу, что приходит запрос с вложенным атрибутом (задача), поэтому он сохраняется правильно, однако сохраняется только проект, а не задача .
Я понял, что не использую field_for (потому что я генерирую его через Javascript во время выполнения).
Кто-то знает, как решить эту ситуацию?
РЕДАКТИРОВАТЬ:
Я попробовал project.tasks.build
в новом действии, но поведение осталось прежним.
Запрос, который достигает действия создания:
{"utf8"=>"✓",
"authenticity_token"=>"GItsCNKllmEEYnhihDLx9QRuObWPNL4qwZBKt56Yss0=",
"project"=>{"name"=>"werwfeb3b33b",
"description"=>"rb3rb3rb3rb3rb",
"due_date"=>"2014-01-21",
"priority"=>"2"},
"tasks"=>{"0"=>{"name"=>"2e2ev"}}}
И код функции javascript (coffeescript), который создает поле времени выполнения «имя» модели задачи:
AddTaskComponent = ->
numberOfTasks++
$('.tasks').append("<div id='TaskTextField" + numberOfTasks + "' class='input-group'><span class='input-group-addon'>Nome" +
"</span><input type='text' id='taskname" + numberOfTasks + "' name='tasks[" + (numberOfTasks - 1) + "][name]' class='form-control' placeholder='Insira o nome da tarefa'></div>")