Rails - 通过Active Resource使用API​​时URL中包含多个值的参数

Nob*_*ita 16 api url w3c ruby-on-rails

我正在使用API​​,希望我按以下格式执行请求:

?filter=value1&filter=value2
Run Code Online (Sandbox Code Playgroud)

但是,我正在使用Active Resource,当我指定:params hash时,我不能使相同的参数在URL中出现两次,我认为这是正确的.所以我不能这样做:

:params => {:consumer_id => self.id, :filter => "value1", :filter => "value2" },因为哈希的第二个过滤器索引将被忽略.

我知道我可以传递一个数组(我认为这是正确的方法),如下所示:

:params => {:consumer_id => self.id, :filter => ["value1","value2"] }
Run Code Online (Sandbox Code Playgroud)

这将生成如下URL:

?filter[]=value1&filter[]=value2
Run Code Online (Sandbox Code Playgroud)

对我来说似乎没问题,但API不接受它.所以我的问题是:

传递具有多个值的参数的正确方法是什么?它是语言特定的吗?谁决定这个?

小智 5

要创建有效的查询字符串,您可以使用

params = {a: 1, b: [1,2]}.to_query

http://apidock.com/rails/Hash/to_query
http://apidock.com/rails/Hash/to_param