1

我想在我的项目中添加一些新任务。该项目目前有超过 1000 个任务。

当我使用 fields_for

=form_for @project do |f|
  =f.fields_for :tasks, @project.tasks.build do |task_fields|
    =task_fields.text_field :name

即使表单仅用于一个新任务,它似乎也加载了所有关联的任务。这是 fields_for 的行为方式还是我遗漏了什么?

4

2 回答 2

2

代替:

  =f.fields_for :tasks, @project.tasks.build do |task_fields|

和:

  =f.fields_for :tasks, [@project.tasks.build] do |task_fields|

这是一对多的关系,因此您必须提供许多(即:数组)对象。[obj]为你做的。

于 2012-05-04T18:38:56.617 回答
1

这是 fields_for 的行为方式还是我遗漏了什么?

如果您正在使用 fields_for 和 accept_nested_attributes_for 等,那么,是的,这就是它应该表现的方式。此范例主要用于同时添加/编辑(项目和任务对象)的情况。

如果您只想一次添加一项任务,我建议您只创建一个任务 MVC,然后将其嵌套在项目资源下。换句话说,通过嵌套它(即../projects/2/tasks/new),您将始终在上下文中拥有一个项目。这里唯一需要注意的是,您必须有一个现有项目才能添加任务(与上面的 fields_for 范例不同)。

如果您还不熟悉嵌套资源,这些文档会有所帮助。

于 2012-05-04T21:35:53.007 回答