2010-11-23 22 views
1

我在軌道面臨以下問題。我有一個表單來編輯/創建一個新的項目,其中可能包含1到n個子項目,這些子項目可以再次包含1到n個任務。Rails多模式表單與數據有一個哈希包含散列

所以,當我創建一個新項目,控制器執行:

@project = Project.new 
sub_project = SubProject.new 
work = Work.new 
sub_project.works << work 
@project.sub_projects << sub_project 

具有基本結構I產生在視圖中輸入字段,我建立這樣的形式:

項目

<% form_for (:project, :url => action_parameter, :id => project) do |form| %> 

子項目

<% fields_for "project[sub_projects][]", sub_project do |subproject_form| %> 

到這裏一切順利,但我現在如何定義fields_for任務?下面的嘗試..

<% fields_for "project[sub_projects][works][]", work do |work_form| %> 

..不是解決辦法,因爲我從雜種得到以下錯誤:

衝突的類型參數 容器。期望一個 哈希的實例,但找到了一個Array實例。 這可能是由傳遞陣列 和基於哈希的參數 qs [] =值& qs [key] = value引起的。

爲什麼不工作?我應該如何解決我的問題?

回答

1

您需要使用嵌套模型表單。查看Ryan Bates的this web cast

+0

嗯..可悲的是我正在工作的代碼仍然是Rails 1.2.3並將它合併到2.x甚至3.x目前仍然離開我的聯盟.. – Mark 2010-11-24 07:01:41

1

之所以我的代碼沒有工作了,我忘了在工作線添加一些額外的括號..

<% fields_for "project[sub_projects][][works][]", work do |work_form| %> 

但是我試圖這樣做似乎沒有可能與前期的Rails 2.3。 X。所以我更新了我的應用程序,然後使用John Drummond建議的嵌套表單。