您正在寻找的是嵌套形式,这在 RoR 中很常见。有关嵌套和复杂表单的更多信息,请参阅Rails 指南的部分。我建议检查所有导轨指南,这在学习框架时非常有帮助。
对于您的具体问题,请先告诉您Contract
模型到accept_nested_attributes_for
your Addendum
model.
class Contract < ActiveRecord::Base
has_many :addendum
accepts_nested_attributes_for :addendums
end
接下来,打开你的合约控制器,并做两件事。一、建立一个addendum
当制作新的contract
。二、允许嵌套属性addendums
(假设您使用的是 Rails 4)contract_params
method.
class ContractController < ApplicationController
def new
@contract = Contract.new
@addendum = @contract.addendums.build
end
protected
def contract_params
params.require(:contact).permit(:field1, :field2, addendums_attributes: [:id, :value, :other_field])
end
end
最后,添加forms_for
你的帮手contract
s form.
<%= form_for @contract do |f| %>
<!-- contract fields -->
Addendums:
<ul>
<%= f.fields_for :addendums do |addendums_form| %>
<li>
<%= addendums_form.label :value %>
<%= addendums_form.text_field :value %>
<!-- Any other addendum attributes -->
</li>
<% end %>
</ul>
<% end %>
这样,您就应该准备好了!快乐编码!