Rails:JSON未收到,因为它已发送

时间:2014-11-28 15:05:55

标签: ruby-on-rails json api ruby-on-rails-4

我有自己的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。

0 个答案:

没有答案