2

我已经看到了许多使用 Accepts_nested_attributes_for 的示例,但其中只有少数用于 json POST/PUT,并且没有一个对我有帮助:/

我的应用程序将用于创建表单。

因此,一个表单有很多 form_rows,而一个 form_row 可以有很多选择(如果它是单选)。所以,我有这样的表单模型:

class Form < ActiveRecord::Base
    attr_accessible :name
    has_many :form_rows
    accepts_nested_attributes_for :form_rows
end

我的控制器看起来像这样:

def update
    @form = Form.find(params[:id])
    @form.update_attributes!(params[:form])
end

这是我要发送的 json

{
  "name": "form test 4",
  "form_rows_attributes": [
    {
      "domtype": "Input",
      "label": "Super row new"
    }
  ]
}

在我的场景中,表单创建只需要一个名称,然后用户添加 form_rows。

当我这样做时,名称会正确更新,但根本不会创建 form_rows。我的控制台中没有错误,只是表单的更新。

我究竟做错了什么?

4

1 回答 1

6

您的 JSON 需要多一层嵌套,因此params[:form]调用实际上会找到参数:

{ 
  "form": {
    "name": "form test 4",
    "form_rows_attributes": [
      {
        "domtype": "Input",
        "label": "Super row new"
      }
    ]
  } 
}
于 2013-03-03T18:40:38.930 回答