我想在我的项目中添加一些新任务。该项目目前有超过 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 的行为方式还是我遗漏了什么?
我想在我的项目中添加一些新任务。该项目目前有超过 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 的行为方式还是我遗漏了什么?
代替:
=f.fields_for :tasks, @project.tasks.build do |task_fields|
和:
=f.fields_for :tasks, [@project.tasks.build] do |task_fields|
这是一对多的关系,因此您必须提供许多(即:数组)对象。[obj]
为你做的。
这是 fields_for 的行为方式还是我遗漏了什么?
如果您正在使用 fields_for 和 accept_nested_attributes_for 等,那么,是的,这就是它应该表现的方式。此范例主要用于同时添加/编辑(项目和任务对象)的情况。
如果您只想一次添加一项任务,我建议您只创建一个任务 MVC,然后将其嵌套在项目资源下。换句话说,通过嵌套它(即../projects/2/tasks/new),您将始终在上下文中拥有一个项目。这里唯一需要注意的是,您必须有一个现有项目才能添加任务(与上面的 fields_for 范例不同)。
如果您还不熟悉嵌套资源,这些文档会有所帮助。