0

我的 ruby​​ 应用程序中有 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 创建视图并从同一页面保存通信地址和永久地址。

谁能告诉我 EmployeeDetail 的 _form.html.erb 的可能结构应该是什么,以及我必须在控制器中进行哪些修改才能保存地址。

谢谢

4

1 回答 1

0

您应该尝试嵌套属性自动保存关联功能。

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

首选方法是使用 :contact_details 和 :communication_address 样式,但 :contactDetails 也应该可以使用

此外,最好为模型使用单数名称。

然后在你的EmployeeDetail模型中写:

accepts_nested_attributes_for :contact_details

它将允许模型在contact_details_attributes字段中接受 contact_details 属性

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和许多其他示例,google byrails nested form

于 2012-08-27T07:03:37.983 回答