我有一个 API 调用,我需要在其中发布 ID 数组。我知道如果我将几个名为 ids[]
的参数传递给我的请求,它们将在 Controller 的 params
散列中显示为一个数组:
# POST /api/events
# params:
# ids[] = 1
# ids[] = 2
# ids[] = 3
# Then in Api::EventsController:
puts params # => { ids: [ "1", "2", "3"] }
但是我该如何测试呢?我不能在我的 RSpec 测试中两次使用相同的参数名称:
post "/api/events", :"ids[]" => 1, :"ids[]" => 2, :"ids[]" => 3
因为那真正的意思是:
post "/api/events", {:"ids[]" => 1, :"ids[]" => 2, :"ids[]" => 3}
...并且哈希不能两次具有相同的键,因此第二个参数被简化为 {:"ids[]"=> 3}
。
像 :"ids[]"=> "1,2,3"
这样的东西不起作用,它只会导致 ids: ["1,2,3"]
。
我应该将什么传递给 post
方法以在我的 Controller 的 params
散列中获取一个数组?
最佳答案
*捂脸*
我不知道为什么我没有想到,但您可以只传递一个数组作为哈希值之一:
post "/api/events", :ids => [1, 2, 3]
我猜我对 URL 语法的理解有点太字面意思了。
希望这个答案能为 future 的 Google 员工节省 30 秒。
关于ruby-on-rails - 将同名参数传递给 Rspec POST 请求以创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21157562/