我有一个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
我想从子Contract
表单更新父Job 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
但是,每次提交Contract
表单时,都会创建一个新的Job Contract
。我可以使用子级的嵌套属性来修改父级吗?我目前的计划是仅使用ajax按钮从Contract
表单中更新Job Contract
答案 0 :(得分:0)
最后,我没有使用嵌套或Ajax。
我只是使用Job Contract
将所有内容放入attr_accessor
表单中,然后在孩子的更新操作中更新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