我有一个需要将参数作为哈希数组传递的条件,它长得像这样:
以下是用于API调用的Rack::Test post方法。
post "#{url}.json",
:api_key => application.key,
:data => [{"Company"=>"Apple,Inc","Website"=>"Apple.com"},{"Company"=>"Google","Website"=>"google.com"}],
:run => { :title => "The First Run" }
这是Rails应用程序的日志记录。
Parameters: {"api_key"=>"6a9acb84d0ea625be75e70a1e04d26360606ca5b", "data"=>[{"Company"=>"Apple,Inc", "Website"=>"Apple.com"}, {"Company"=>"Google", "Website"=>"google.com"}], "run"=>{"title"=>"The First Run"}, "line_id"=>"4e018e2c55112729bd00000a"}
现在,这是我使用的RestClient post方法来调用API。
RestClient.post("/lines/#{@line.id}/runs.json", {:run => {:title => @title}, @param_for_input => @param_data})
这是 Rails 应用程序的日志记录。
Parameters: {"run"=>{"title"=>"run name"}, "data"=>{"Company"=>"Google", "Website"=>"google.com"}, "api_key"=>"f488a62d0307e79ec4f1e6131fa220be47e83d44", "line_id"=>"4e018a505511271f82000144"}
区别在于 data
参数。
使用 Rack::Test 方法发送数据时,数据会作为 "data"=>[{"Company"=>"Apple,Inc", "Website"=>"Apple.com"}, {"Company"=>"Google", "Website"=>"google.com"}]
传递。但是使用 RestClient 方法时,参数数据数组被剥离,只有最后一个哈希被传递,形式为
"data"=>{"Company"=>"Google", "Website"=>"google.com"}
。为什么 RestClient 要将哈希数组剥离成只有最后一个哈希呢?
@param_data
是你想要的吗?我正在使用 RestClient,没有出现过这样的问题。 - d11wtq@param_data
的值:[{:Company => "Google", :Website => "google.com"}, {:Company => "Times", :Website => "times.com"}]
。 - millisami