[英]Rails nested forms: How to update the parent attributes from a child form
我有一个Contract
模型父母,有一个Job Contract
模型孩子。 Contract
表类似于基础表, Job Contract
表是该基础合同的详细信息,可以在以后进行扩展。
class Contract < ApplicationRecord
has_one :job_contract, dependent: :nullify
after_create :create_job_application_contract
def create_job_application_contract
JobContract.create(contract_id: self.id)
end
end
class JobContract < ApplicationRecord
belongs_to :contract, optional: true
end
我想从子Job Contract
表单中更新父Contract
,所以我在Job Contract
表单中使用嵌套属性
class JobContract < ApplicationRecord
belongs_to :contract, optional: true
accepts_nested_attributes_for :contract
end
# edit.html.slim
= simple_form_for @job_contract do |f|
= f.simple_fields_for :contract do |c|
= c.input :salary
但是,这将在每次提交Job Contract
表格时创建一个新Contract
。 我可以使用子级的嵌套属性来修改父级吗? 我目前的计划是只使用一个Ajax按钮来更新Contract
从Job Contract
形式
最后,我没有使用嵌套或Ajax。
我只是使用attr_accessor
将所有内容放入“ Job Contract
表单中,然后在孩子的更新操作中更新“ Contract
父对象
class JobContract < ApplicationRecord
belongs_to :contract, optional: true
attr_accessor :salary
end
# edit.html.slim
= simple_form_for @job_contract do |f|
= f.input :salary
# job_contract_controller
if @job_contract.update(job_contract_params)
@contract.update(contract_value: @job_contract.salary)
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.