如何通过HTTParty通过PUT请求发送空数组?

时间:2013-03-14 01:06:39

标签: ruby-on-rails ruby httparty

我有一个Photo类,它具有“name”属性和“tags”属性。我的目标是在Rails中实现一个更新功能,用输入的内容替换照片的标签。例如,如果我尝试将“标签”设置为[]的JSON对象PUT,我希望从照片中清除任何标签。

但是,当我通过HTTParty提交一个空数组作为body参数之一时,我相信HTTParty正在将[]转换为nil。因此,我的Rails后端上的照片#update endpoint没有收到参数“tags”的任何内容。我正在寻找一种方法让HTTParty不将[]转换为nil,因为我失去了从照片中删除标签的能力。

2 个答案:

答案 0 :(得分:1)

这是Rails 4中的一个错误/功能,您可以在以下位置阅读有关该剧的更多信息:https://github.com/rails/rails/issues/13420

您的选择包括:

  • 类似于@ mkk的答案的一次性黑客
  • 升级到Rails 5
  • 在任何地方停用deep_munge,并处理其后果:

>

# config/application.rb
config.action_dispatch.perform_deep_munge = false

答案 1 :(得分:-1)

只需将空数组分配给params,例如:

params[:photo][:tags] ||= []

如果没有设置params [:photo] [:tags],它将分配空数组。如果它不起作用,则意味着你必须调整键,例如,你可能没有:tags,但是:tag_ids,那么你将不得不写params [:photo] [:tags]。只需检查您的HTML结构(您可以随时将其粘贴到此处,我可以帮助您)。据我所知,这是标准方法:)