的Rails 2.3嵌套属性问题

问题描述:

我遇到的问题与嵌套形式,我相信应该很容易解决,但我找不到它周围的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

你包括你的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

不是我正在寻找的答案..但是我已经用父控制器(事件)中的后期保存方法攻击了我的方法,并检查子对象以检查联系人是新的还是现有的..

然后我手动更新的intemediary表event_contacts ...

不是最完美的解决方案,但它的工作原理,并让我继续......

仍然希望得到任何指导,怎么办这个轨道的方式..

我对此不太确定,但是您能检查一下您的Rails版本吗?与accepts_nested_attributes_for相关的错误已在2.3.10中修复。