Ruby on rails 在rails 4上创建带有嵌套属性的模型,而不包含字段\u,这可能吗?

Ruby on rails 在rails 4上创建带有嵌套属性的模型,而不包含字段\u,这可能吗?,ruby-on-rails,ruby-on-rails-4,nested-attributes,fields-for,Ruby On Rails,Ruby On Rails 4,Nested Attributes,Fields For,我有两种型号 1) 计划 当我点击表单中的submit按钮时,我可以看到带有嵌套属性(任务)的请求进入,因此它被正确保存,但是,只有项目被保存,而不是任务被保存 我意识到我没有使用字段_for(因为我在运行时通过Javascript生成它) 有人知道如何解决这种情况吗 编辑: 我尝试了project.tasks.build到新的操作中,但行为仍然有效 到达创建操作的请求是: {"utf8"=>"✓", "authenticity_token"=>"GItsCNKllmEEYnhihD

我有两种型号

1) 计划

当我点击表单中的submit按钮时,我可以看到带有嵌套属性(任务)的请求进入,因此它被正确保存,但是,只有项目被保存,而不是任务被保存

我意识到我没有使用字段_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"}}}
生成任务模型的运行时字段“name”的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>") 
AddTaskComponent=->
任务数++
$('.tasks').append(“Nome”+
"") 

在保存
@project
之前,您没有使用参数更新它,因此它只是保存您在
new
中创建的新实例。一旦您解决了这个问题,我认为您还必须允许嵌套属性,如中所述。

您几乎已经做到了。。。您的表单正在返回一个params散列,其中包括以下参数:

"tasks"=>{"0"=>{"name"=>"2e2ev"}} 
但你应该回来的是

"tasks_attributes"=>{"0"=>{"name"=>"2e2ev"}}

因此,您可能可以立即看到在何处更改javascript以构造格式正确的params散列。输入字段的“name”属性必须是固定的。

我这样做了,但仍然没有在我的数据库中获取嵌套属性,只有项目。您是否可以更新代码以反映新版本的
create
?是的,我已经这样做了。现在创建操作将new和save放在一起。您是否介意同时更新
项目
类定义以显示如何允许嵌套属性?已编辑!如您所见,我已将
接受嵌套的属性\u用于:tasks
,因此项目可以接受任务作为嵌套属性。
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>") 
"tasks"=>{"0"=>{"name"=>"2e2ev"}} 
"tasks_attributes"=>{"0"=>{"name"=>"2e2ev"}}