0
我传递嵌套的JSON进入轨道,像这样:轨道4 - 遍历嵌套的JSON PARAMS
{
"product": {
"vendor": "Acme",
"categories":
{
"id": "3",
"method": "remove",
},
"categories":
{
"id": "4"
}
}
}
,以更新产品的类别。我想遍历类别在我products_controller属性,这样我可以添加/删除产品的多个类别一次:
def updateCategory
@product = Product.find(params[:id])
params[:product][:categories].each do |u|
@category = Category.find_by(id: params[:product][:categories][:id])
if params[:product][:categories][:method] == "remove"
@product.remove_from_category(@category)
else
@product.add_to_category(@category)
end
end
end
然而,这仅仅使用了第二个“类别” ID在更新和没有按不会迭代两者。 示例响应JSON:
{
"product": {
"id": 20,
"title": "Heavy Duty Aluminum Chair",
"product_price": "47.47",
"vendor": "Acme",
"categories": [
{
"id": 4,
"title": "Category 4"
}
]
}
}
正如你所看到的,它只是添加了ID = 4的类别,并跳过了3类
我是相当新的轨道,所以我知道我可能在这里丢失了明显的东西我玩过我传入的JSON格式,但这只会让事情变得更糟。
这是有道理的。如果我改变它,但是在这一行我得到一个错误:“没有将符号隐式转换为整数”:“@category = Category.find_by(id:params [:product] [:categories] [:id] )“ – Seanvm
@Seanvm我给我的答案增加了一些。看看是否有帮助。 – rdubya
工作!谢谢! – Seanvm