2013-04-16 157 views
0

我有一個複選框列表,用戶可以在其中爲項目選擇一個或多個組織。這是一個有很多通過關聯。如何爲有很多通過關聯的記錄創建新記錄

但我也想加一個文本框,上面寫着Add Other因此用戶還可以創建一個新的組織並將其分配給該項目自動

project.rb

has_many :organizationables 
has_many :organizations, through: :organizationables 
attr_accessible :organization_ids 

organization.rb

attr_accessible :name, :website 
has_many :organizationables 
has_many :projects, through: :organizationable 

organizationable.rb

attr_accessible :organization_id, :project_id 
belongs_to :organization 
belongs_to :project 

我知道我對於這個協會的組織來說,這是一個奇怪的名字,但是哦。我嘗試過不同的方法來設置表單,但我無法完成工作。

新項目FORM應該有地方機構可以被分配到一個項目的複選框,但也將有一個Other Organization文本字段(這將創造一個新的組織,並將其分配給項目)。

+0

你考慮過使用[cocoon gem](https://github.com/nathanvda/cocoon)嗎? – PinnyM

+0

我正在使用簡單的窗體,但我不知道如何去做我想達到的目標。 – leonel

+0

繭與簡單形式(或Formtastic或標準形式)工作 - 檢查出來。我認爲你的加入模型的一個更合理的名稱將是'可組織的'... – PinnyM

回答

0

假設在一個動作要創建新的組織和準到現有的項目,這裏是最簡單的方法:

new_organization.save! 
project.organizations << new_organization 

,將創建並保存organizationable紀錄新聯項目組織。

更新:

首先保存新項目。然後建立他們檢查的一系列組織。如果他們創建了一個組織,請保存並將其添加到數組中。隨後扳平組織名單的項目一舉:

project.organizations = my_list_of_checked_organizations 

一個類似的例子見http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association

+0

這不起作用,你不能更新'has_many:through'關聯,它是隻讀的。 –

+0

我想在新建項目表單中創建新組織。他們可以使用複選框將組織分配給項目,也可以填寫「其他組織」字段(這將創建一個新組織) – leonel

+0

Mauricio,我的第一個使用'<<'的示例絕對有效。它對數據庫的影響是將記錄添加到連接表中,而不是添加到組織表中,但這樣做會增加project.organizations集合。非常簡單直接。 – sockmonk

相關問題