Rails 5.1 minitest在params中展平数组

时间:2017-05-22 17:58:56

标签: ruby-on-rails arrays parameters ruby-on-rails-5.1

从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"]]

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

2 个答案:

答案 0 :(得分:2)

经过这么多时间后找到了答案..

我们认为只有: @request.headers['Accept'] = 'application/json' 在设置中没问题。

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

答案 1 :(得分:0)

添加as: :json选项:

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