我有自己的gem,它使用rest-client创建一个JSON post请求。我也有一个接收该请求的应用程序。我所坚持的是收到的消息与发送的消息不一样,导致失败。任何人都可以确定问题所在吗?
在宝石
中class Transmission
def post
RestClient.post(url, to_json, content_type: :json, accept: :json)
end
def to_json
{
client: client,
token: secure_token(nonce),
nonce: nonce,
transmission: {
guid: guid,
tasks_attributes: files_for_transmission_array
}
}
end
def files_for_transmission_array
files_for_transmission.collect { |file| file.to_json }
end
end
class File
def to_json
{
data: data_as_base64,
filename: @filename
}
end
end
如果我在帖子之前做了'puts to_json',我会得到以下内容;
{
:client=>"75981e21-8eec-43c8-9931-c023968e8410",
:token=>"62274d8c54cfae46383428f07fa054542e8d5732ae8d90a4059d301c819e8641",
:nonce=>"8zxq/J6gUbOYoQjQIyc+Ng==",
:transmission=>
{
:guid=>"84770042-8aa1-4f64-98ad-5d97f5337041",
:tasks_attributes=>
[
{
:data=>"iVB<abbreviated>Ogg==\n",
:filename=>"logo.png"
}
]
}
}
在Rails应用
中如果我在另一端的控制器中执行'puts'参数:#{params}“',我会得到以下输出;
{
"client"=>"75981e21-8eec-43c8-9931-c023968e8410",
"token"=>"ae2ba9bde2de6eb9da040ac3716ef40ea3930251249a01997c83f64334221836",
"nonce"=>"DAffYRWUJasgkxdSN4+V4Q==",
"transmission"=>
{
"guid"=>"2fc571d6-5a9a-4e60-a7b2-e68bbd3e1d5c",
"tasks_attributes"=>
{
"data"=>"iVBO<abbreviated>gg==\n",
"filename"=>"logo.png"
}
},
"format"=>"json",
"action"=>"create",
"controller"=>"api/v1/transmissions"
}
由于某种原因,tasks_attributes不再在数组中。接收模型期望has_many的嵌套属性并抛出错误'TypeError - 没有将Symbol隐式转换为整数:'
我正在使用Rails 4.1.7。