我的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创建视图并从同一页面保存communicationAddress和permanentAddress。
任何人都可以告诉我什么应该是EmployeDetail的_form.html.erb的可能结构,以及我必须在控制器中进行哪些修改来保存地址。
thnks
答案 0 :(得分:0)
您应该尝试nested attributes和autosave association功能。
但首先,修复关联名称:ContactDetails可能会导致非常奇怪的错误,因为Ruby将以大写字母开头的所有单词计为常量。
首选方法是使用:contact_details和:communication_address样式,但是:contactDetails也应该起作用
此外,最好使用单数名称作为模型。
然后在你的EmployeeDetail
模型中写:
accepts_nested_attributes_for :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| %>