2009-09-25 101 views
0

我遇到的問題與嵌套形式,我相信應該很容易解決,但我找不到它周圍的Rails 2.3嵌套屬性問題

基本上我有以下關係的方式

event has_many :contacts => through :event_contacts 

只要我每次創建新的聯繫人,嵌套窗體都可以正常工作。

如果我在下拉菜單中包含了一個允許選擇嵌套表單中的現有聯繫人的事件,則會創建一個事件,但contact_id在event_contacts表中爲零。

沒有接觸被創建,因爲我張貼的「ID」字段中嵌套的接觸。(即.new_record?返回false。)

那麼,如何更新event_contacts表,以確保「選擇'聯繫人是否正確關聯?

見下文snipbits ...

模式

class Event < ActiveRecord::Base 
    belongs_to :user 

    has_many :event_contacts 
    accepts_nested_attributes_for :event_contacts 

    has_many :contacts, :through => :event_contacts 
    accepts_nested_attributes_for :contacts 


class EventContact < ActiveRecord::Base 
    belongs_to :event 
    belongs_to :contact 

    accepts_nested_attributes_for :contact 


class Contact < ActiveRecord::Base 
    belongs_to :user 

    has_many :event _contacts 
    has_many :events, :through => :event_contacts 

查看

- fields_for(@event) do |f| 
    - f.fields_for :event_contacts do |rc| 
    - rc.fields_for :contact do |c| 
     = c.collection_select :id, Contact.all, :id, :name, { :selected => @contact.id || 0 } 

     = c.hidden_field :user_id, :value => @current_user.id 
     = c.text_field :first_name 
      = c.text_field :email 
+1

你可以粘貼相關的代碼片段嗎? – khelll 2009-09-25 09:25:45

+0

嗨已添加模型和查看代碼以概述我在做什麼 – Dom 2009-09-25 15:20:30

回答

0

你包括你的accepts_nested_attributes模型?

+0

是的,在父模型(事件)和連接模型中也包含此事件(event_contact) – Dom 2009-09-25 15:21:24

+0

爲什麼使用單獨模型?您可以使用hbtm關係並刪除這一個模型(evencontact) – Lichtamberg 2009-09-25 15:35:25

+0

想要在聯接模型中存儲更多信息,該信息不適合事件或聯繫人模型 – Dom 2009-09-25 22:05:55

0

不是我正在尋找的答案..但是我已經用父控制器(事件)中的後期保存方法攻擊了我的方法,並檢查子對象以檢查聯繫人是新的還是現有的..

然後我手動更新的intemediary表event_contacts ...

不是最完美的解決方案,但它的工作原理,並讓我繼續......

仍然希望得到任何指導,怎麼辦這個軌道的方式..

0

我對此不太確定,但是您能檢查一下您的Rails版本嗎?與accepts_nested_attributes_for相關的錯誤已在2.3.10中修復。