6

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

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

4

2 回答 2

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
于 2017-01-31T20:32:29.600 回答
-1

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

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

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

于 2013-03-14T01:12:48.703 回答