繁体   English   中英

Rails嵌套表单:如何从子表单更新父属性

[英]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按钮来更新ContractJob 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM