假设您的项目 A 是一个人,项目 B 是一个项目。所以,对于你所说的,一个人有_许多项目。(为了澄清示例,我决定使用“真实世界”资源,而不是 Item A 和 Item B)。
以下是定义模型关联的方法:
class Person < ActiveRecord::Base
has_many :projects
accepts_nested_attributes_for :projects
end
class Project < ActiveRecord::Base
belongs_to :person
end
然后,您的 Person 的形式将如下所示:
<%= form_for @person do |person_form| %>
...
<%= person_form.fields_for :projects do |project_builder| %>
# Here goes the fields of the projects
<%= project_builder.text_field :name %>
<% end %>
...
<% end %>
这里的关键是fields_for方法,它可以让您将与该 Person 关联的项目的表单构建器放入您的 Person 表单中。
重要的是要知道,如果您正在创建一个新人员,显然没有关联的项目,因此 fields_for 部分将为空。您可能想从基本上在 #new 操作中执行此操作开始:
def new
@person = Person.new
5.times { @person.projects.build }
end
稍后,一旦你感觉到你知道发生了什么,你可能想在前端添加一些按钮,让你“动态地”添加新项目。