Rails:嵌套表单和设置嵌套值

时间:2014-05-07 01:48:07

标签: ruby-on-rails nested-forms

我创建了一个嵌套表单。我有一个名为contract的模型和另一个名为contract_details的模型。在我的合同控制器中,我有以下代码:

def new
    @contract = Contract.new
    @contract.customer_id = params[:customer_id]
    7.times { 
      @contract.contract_details.build
      @contract.contract_details.del_day = "Sun"
    }
end

del_day是我的contract_details模型中的一列,但以下代码行错误:

@contract.contract_details.del_day = "Sun"

我做错了什么?如何从顶层控制器访问嵌套模型中的列。这意味着,在构建合同控制器中的每一行时,如何在contract_details模型中设置列的值?

1 个答案:

答案 0 :(得分:0)

当我重新阅读时,如果它是一个数组,你只会做同样的事情7次,所以建议你尝试以下方法:

def new
    @contract = Contract.new
    @contract.customer_id = params[:customer_id]
    7.times { 
      @new_contract_details = @contract.contract_details.build
      @new_contract_details.del_day = "Sun"
    }
end

问题在于,当您调用以下行时,没有迹象表明您正在尝试更新哪个'contract_details'对象。

@contract.contract_details.del_day = "Sun"