为什么"accepts_nested_attributes_for"不起作用?



我有以下型号的

订单

    class Order < ApplicationRecord
         has_many  :items
         accepts_nested_attributes_for :items
    end

和项目

class Item < ApplicationRecord

belongs_to  :order
end

我有下面的Json来解析订单中包含多个项目的

    {
  "location": "takeAway",
  "status": "preparing",
  "items": [
    {
        "id":2,
      "name": "coffee",
      "quantity": 1,
      "milk": "whole",
      "size": "small"
    }
  ]
}

我的控制器有以下代码。

 params.require(:order).permit(:location, :status, items_attributes:  [:id, :name, :quantity, :milk, :size])

为什么我无法将订单记录与项目记录一起保存?有人能帮忙吗?

我想问题是您在params中接收密钥items,但您允许items_attributes。您应该确保在params中收到items_attributes,而不是items。只有这样,它才会自动为items记录分配属性。

因此,您的最终params哈希必须如下所示:

    {
      "location": "takeAway",
      "status": "preparing",
      "items_attributes": [
        {
          "id":2,
          "name": "coffee",
          "quantity": 1,
          "milk": "whole",
          "size": "small"
        }
      ]
    }

如果您想在params中保留items密钥,那么您必须在控制器中自己构建Item对象。

相关内容

  • 没有找到相关文章

最新更新