Ruby on rails 如何发送带有POST请求的数组,以及包含一组空方括号[]的数组的参数名?

Ruby on rails 如何发送带有POST请求的数组,以及包含一组空方括号[]的数组的参数名?,ruby-on-rails,arrays,ruby,http,parameters,Ruby On Rails,Arrays,Ruby,Http,Parameters,因此,Rails通常处理通过HTTP Post请求(表单)发送的传入数组的解析,如下所示: categories=one&categories=two&categories=three “通常Rails会忽略重复的参数名称。如果 名称包含一组空的方括号[],则它们将 在数组中累积。“- 但是,当使用Net::HTTP.Post向第三方服务(API)发送Post请求时,似乎没有遵循HTTP Post请求中处理数组的约定 此代码: data = {:categories =>

因此,Rails通常处理通过HTTP Post请求(表单)发送的传入数组的解析,如下所示:

categories=one&categories=two&categories=three
“通常Rails会忽略重复的参数名称。如果 名称包含一组空的方括号[],则它们将 在数组中累积。“-

但是,当使用Net::HTTP.Post向第三方服务(API)发送Post请求时,似乎没有遵循HTTP Post请求中处理数组的约定

此代码:

data = {:categories => [one, two, three]}
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data(data)
response = http.request(request)
然后将按如下方式序列化阵列:

categories=one&categories=two&categories=three
而不是像这样(我认为这是传统的Rails方式):

为什么?

我可以看出这与最近使用的方法的实现有关。但是,偏离传统轨道方式的目的是什么


而且,更重要的是,我如何轻松地修改它以后一种方式发送它(而不重载一堆固有的Ruby/Rails方法)?

我发现解决方案就像更改表名一样简单:

data = {'categories[]' => [one, two, three]}
即使数据散列的其他元素是
:符号
,它也可以工作


我仍然很好奇,为什么Rails在使用
Net::HTTPHeader::set\u form_data
方法获取Rails在url参数中处理数组的传统方法时,需要进行这种“黑客攻击”。

Net::HTTP
是一个独立的ruby库。这与Rails无关。谢谢你提供的信息。我将问号ror编辑为ruby以适应这个问题。Rails使用Net:HTTP,对吗?所以问题仍然是为什么Rails在处理该库时会偏离其在参数中处理url的传统方式。毕竟,Rails可能有一些重载的方法或一些保留其自身约定的接口,我不这么认为。看起来它的唯一用途是生成文档: