Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 如何通过Rails API接受JSON,对于嵌套字段没有“_attributes”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经用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来更改名称.

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 如何通过Rails API接受JSON,对于嵌套字段没有“_attributes”全部内容,希望文章能够帮你解决ruby-on-rails – 如何通过Rails API接受JSON,对于嵌套字段没有“_attributes”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: