2

从 Rails 4.2 升级到 5.1 后,似乎只用于测试,当我提供如下内容时:

post :create, params: {
  model: {
    prices: [[2000, "EUR"], [2113.56, "USD"]],
    estimates: [[50, 2500, "EUR"], [505, 2600, "USD"]]
  }
}

然后在控制器的参数中将其解析为:

prices: [["2000"], ["EUR"], ["2113.56"], ["USD"]]
estimates: [["50"], ["2500"], ["EUR"], ["505"], ["2600"], ["USD"]]

幸运的是,对控制器的实际调用被正确解析。我显然需要修复测试,所以任何帮助都将不胜感激!

4

2 回答 2

3

这么久终于找到答案了。。

我们认为只有: @request.headers['Accept'] = 'application/json' in setup 就可以了。

但我们还必须包括: @request.headers['Content-Type'] = 'application/json' 为了正确解析参数!

于 2017-07-04T12:35:09.003 回答
0

添加as: :json选项:

post :create, as: :json, params: {
  model: {
    prices: [[2000, "EUR"], [2113.56, "USD"]],
     estimates: [[50, 2500, "EUR"], [505, 2600, "USD"]]
  }
}
于 2020-09-28T13:17:12.927 回答