我有以下模特
顺序
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])
为什么我无法使用商品记录保存订单记录?有人可以帮忙吗?
答案 0 :(得分:1)
我想问题是您在params中收到了密钥items
,但您允许items_attributes
。您应该确保以params而不是items_attributes
收到items
。只有这样,它才会自动为items
条记录分配属性。
所以,你的最终params hash必须如下所示:
{
"location": "takeAway",
"status": "preparing",
"items_attributes": [
{
"id":2,
"name": "coffee",
"quantity": 1,
"milk": "whole",
"size": "small"
}
]
}
如果您希望将items
键保留在参数中,则必须自己在控制器中构建Item
个对象。