2012-08-27 67 views
0

我在我的红宝石应用程序中有3个类。如何在红宝石中保存嵌套类?

class EmployeeDetail < ActiveRecord::Base 
     belongs_to :ContactDetails 
    end 

    class ContactDetails < ActiveRecord::Base 
     belongs_to :communicationAddress, :class_name=>'Address' 
     belongs_to :permanentAddress, :class_name=>'Address' 
    end 

    class Address < ActiveRecord::Base 
     attr_accessible :city, :country, :pin, :state, :street 
    end 

我的要求是为EmployeeDetail创建视图并从同一页保存communicationAddress和permanentAddress。

任何人都可以告诉我什么应该是_form.html.erb为EmployeeDetail的可能结构,以及我必须在控制器中做出什么样的修改来保存地址。

thnks

回答

0

你应该尝试nested attributesautosave association功能。

但首先,修复关联的名称:ContactDetails可能会导致非常奇怪的错误,因为Ruby将以大写字母开头的所有单词计数为常量。

首选的方法是使用:contact_details和:communication_address风格,但:contactDetails应太

此外,它preferrable为模型中使用奇异的名字。

然后在你的EmployeeDetail型号写:

accepts_nested_attributes_for :contact_details 

它将使模型接受contact_details属性在contact_details_attributes

ContactDetails

accepts_nested_attributes_for :communication_address, :permanent_address 

之后,你可以使用fields_for帮手创建表单,例如:

<%= form_for :employee_detail do |employee_form| %> 
    <%= employee_for.fields_for :contact_detail do |contact_fields| %> 
     <%= contact_fields.fields.for :communication_address do |comm_address_fields| %> 

您可能会看到一些例子:herehere和许多人一样,通过rails nested form

+0

谷歌我得到了它。但是当我去编辑页面时,地址字段没有得到填充值。我不知道为什么? –

+0

可以请你提供一些解决方案,为什么编辑不工作??? –