按照Documentation的機械化,在這種GitHub Issue討論適當的方式提交這些參數是通過使用二維數組如下
params = [["opt[]",1],["opt[]",2],["opt[]",3]]
agent.post 'url', params
在閱讀GitHub時,似乎這是一個已知的功能約束,他們正在或正在計劃努力解決這個問題,但目前這是正確的提交方法。如果您更喜歡使用Hash
結構,那麼操作就不那麼困難了,例如
def process_to_mechanize_params(h)
h.map do |k,v|
if v.is_a?(Array)
v.map {|e| ["#{k}[]",e]}
else
[[k.to_s,v]]
end
end.flatten(1)
end
然後你可以使用
params = {'opt' => [1,2,3],'value' => 22, another_value: 'here'}
process_to_mechanize_params(params)
#=>=> [["opt[]", 1], ["opt[]", 2], ["opt[]", 3], ["value", 22], ["another_value", "here"]]
希望這有助於。正如@pguardiario指出的那樣一個字符串也是可以接受的,但我覺得它可能會降低可讀性。
您是否嘗試了'params = [[「opt []」,1],[「opt []」,2],[「opt []」,3]]''好像[文檔] //mechanize.rubyforge.org/Mechanize.html#method-i-post)和[This GitHub issue](https://github.com/sparklemotion/mechanize/issues/132)都表明這是一條路。 – engineersmnky
是的,這工作。你介意把它寫成aswer嗎? –