2012-05-04 89 views
1

我想添加一些新的任務到我的項目。該項目目前有超過1000個任務。fields_for - 加載中的所有記錄有很多關係?

當我使用fields_for

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

看來,即使形式是隻爲一個新的任務加載所有相關的任務。這是fields_for應該如何表現還是我錯過了什麼?

回答

2

替換:

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

有:

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

這是一個一對多的關係,所以你必須要提供很多(即:一個數組)對象。 [obj]爲您提供。

1

這是如何fields_for應該表現還是我錯過了什麼?

如果你正在使用fields_for和accepts_nested_attributes_for等等,那麼,是的,這是它應該如何表現。這個範例主要用於當您同時添加/編輯兩個項目和任務對象時。

如果你只是想一次添加一個任務,我建議只創建一個任務MVC,然後將它嵌套在項目資源下。換句話說,通過嵌套它(即../projects/2/tasks/new),你總是會在上下文中有一個項目。這裏唯一的警告是你必須有一個現有的項目來添加任務(不同於上面的fields_for範例)。

如果您還不熟悉嵌套資源,這些docs將有所幫助。