accepts_nested_attributes_for whith json PUT(更新)

时间:2013-03-03 18:35:56

标签: ruby-on-rails json

我见过许多使用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根本没有创建。我的控制台中没有错误,只是表单的UPDATE。

我做错了什么?

1 个答案:

答案 0 :(得分:6)

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

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