轨道5参数,带有空数组的对象,因为值删除



在发送看起来像这样的控制器参数时我有问题:

{ id: "1", stuff: {"A" => [], "B" => [], "C" => [], "D" => []} }

该方法仅看到{ id: "1" },并且整个stuff参数已删除。

如果数组中有任何值,则可以更改。但是说除了密钥"C"外,所有数组中都有值,除了"C"之外,它们都将在那里,例如:

{ id: "1", stuff: {"A" => ["1"], "B" => ["2", "3"], "D" => ["4"]} }

我陷入了从铁路升级4.2.x-> 5.0.0升级的问题关于这里发生的事情有什么建议吗?我已经看到了有关弹跳参数的几篇文章/问题,但是我不确定这是否是问题,因为在他们的示例表中,弹奏工作的工作方式为 {person: []}变为 {person: nil},其中人参数并未完全删除。

来自GH社区的@sgrif:

这是预期的行为。没有办法编码空的 使用HTML形式(例如内容类型:URL形式编码)的数组。这 您的测试在Rails 4.2中通过的原因是控制器测试确实 不编码其参数,他们只是通过哈希通过 直接地。在铁轨5中,它编码它们。如果您的控制器在乎 空数组,您可能正在处理JSON请求。你 可以在您的测试中使用AS :: JSON。如果您只是在处理 表单输入,您永远不会收到空数组。

添加as: :json最终对我没有工作,但是在测试开始时添加@request.headers["Content-Type"] = 'application/json'

相关内容

最新更新