ruby-on-rails – 如何通过Rails API接受JSON,对于嵌套字段没有
发布时间:2020-12-16 20:28:41 所属栏目:百科 来源:网络整理
导读:我已经用Rails编写了一个API,并且需要在API调用中接受一些嵌套的属性. 目前我通过发送数据 PATCH /api/v1/vintages/1.json { "vintage": { "year": 2014,"name": "Some name","foo": "bar","sizes_attributes": [ { "name": "large","quantity": "12" },{ "n
我已经用Rails编写了一个API,并且需要在API调用中接受一些嵌套的属性.
目前我通过发送数据 PATCH /api/v1/vintages/1.json { "vintage": { "year": 2014,"name": "Some name","foo": "bar","sizes_attributes": [ { "name": "large","quantity": "12" },{ "name": "medium","quantity": "2" } ] } } 但是,我想执行以下操作: PATCH /api/v1/vintages/1.json { "vintage": { "year": 2014,"sizes": [ { "name": "large","quantity": "2" } ] } } 不同之处在于属性是字段键的一部分.我想要能够accept_nested_attributes_for:大小,而不必使用_attributes作为JSON对象的一部分. 任何人都知道如何管理这个? 解决方法
您可以在强参数方法中自由执行一些魔法.根据你想要的,你可能在你的控制器中有这个方法:
def vintage_params params.require(:vintage).permit(:year,:name,:foo,{ sizes: [:name,:quantity] }) end 所有您需要做的是调整该方法中的大小键的名称.我建议: def vintage_params vintage_params = params.require(:vintage).permit(:year,:quantity] }) vintage_params[:sizes_attributes] = vintage_params.delete :sizes vintage_params.permit! end 这将删除:sizes键并将其放在预期的:sizes_attributes中,而不会弄乱你漂亮的json.没有什么可以直接使用accept_nested_attributes_for来更改名称. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |