我有一个API调用,我需要POST一组ID。我知道如果我将几个名为ids[]
的params传递给我的请求,它们将在控制器的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
方法以获取控制器的params
哈希中的数组?
答案 0 :(得分:5)
*的 捂脸 * 强>
我不知道为什么我没有发生这种情况,但您可以将数组作为其中一个哈希值传递:
post "/api/events", :ids => [1, 2, 3]
猜猜我的URL语法有点太过分了。
希望这个答案将为未来的Google员工节省30秒。