在开始我在下面给出的任何内容之前,您必须删除之前创建的任何表或控制器并将其作为新的开始,并按照下面给出的说明进行操作以避免任何异常或重复。
所以首先你需要为组织生成一个脚手架,为电话号码和地址生成一个简单的模型(这将生成它的迁移以及添加表)。现在只为组织生成脚手架的原因是因为您不需要电话号码或地址的表单(视图)。但是您会将地址与某个组织相关联,将 phone_numbers 与某个地址相关联,以便稍后通过代码处理,我将向您解释以使其保持简单并确保其正常工作。现在首先您需要运行以下命令:
rails generate scaffold organizations org_name:string org_description:text webdomain:string
rails generate model address offc_addr:text organization_id:integer
rails generate model phone_number offc_ph:string address_id:integer
现在这将生成您需要的所有内容。接下来,您需要运行以下命令在数据库中添加表。
rake db:migrate
完成后,您需要调整模型,如下所述:
#FOR ORGANIZATIONS
class Organization < ActiveRecord::Base
attr_accessible :org_description, :org_name, :webdomain
has_many :addresses
#THIS IS TO MAKE IT EASIER TO MANAGE IT IN VIEWS (read about nested attributes if you do not know)
accepts_nested_attributes_for :addresses
end
#FOR ADDRESS
class Address < ActiveRecord::Base
attr_accessible :offc_addr, :organization_id
belongs_to :organization
has_many :phone_numbers
#THIS IS TO MAKE IT EASIER TO MANAGE IT IN VIEWS (read about nested attributes if you do not know)
accepts_nested_attributes_for :phone_numbers
end
#FOR PHONE NUMBER
class PhoneNumber < ActiveRecord::Base
attr_accessible :address_id, :offc_ph
belongs_to :address
end
这就是你需要做的所有事情。现在只需在视图中使用组织对象生成 fields_for 地址,使用地址对象生成 fields_for phone_numbers。为了您的帮助,您可以从下面的链接中阅读 nested_attributes 行为:
http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for
我希望这会帮助你瓦西,并会为你清理事情。干杯:)