accepts_nested_attributes_for whith json PUT(更新)

Oli*_*ier 2 json ruby-on-rails

我见过许多使用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
Run Code Online (Sandbox Code Playgroud)

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

def update
    @form = Form.find(params[:id])
    @form.update_attributes!(params[:form])
end
Run Code Online (Sandbox Code Playgroud)

这是我要发送的json

{
  "name": "form test 4",
  "form_rows_attributes": [
    {
      "domtype": "Input",
      "label": "Super row new"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

在我的场景中,表单创建只接受一个名称,之后用户添加form_rows.

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

我究竟做错了什么?

pat*_*raw 6

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

{ 
  "form": {
    "name": "form test 4",
    "form_rows_attributes": [
      {
        "domtype": "Input",
        "label": "Super row new"
      }
    ]
  } 
}
Run Code Online (Sandbox Code Playgroud)