Согласно Documentation для Mechanize и обсуждение в этом GitHub Issue надлежащим образом представить эти параметры с помощью 2D-массива следующего
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 указал, что String также будет приемлемым, но я чувствую, что это может уменьшить читаемость.
Вы пробовали 'params = [[" opt [] ", 1], [" opt [] ", 2], [" opt [] ", 3]]' Похоже, [Документы] (http: //mechanize.rubyforge.org/Mechanize.html#method-i-post) и [Этот вопрос GitHub] (https://github.com/sparklemotion/mechanize/issues/132) свидетельствуют о том, что это путь. – engineersmnky
Да, это сработало. не могли бы вы написать его как асьер? –