【发布时间】:2011-07-12 09:51:10
【问题描述】:
我正在使用 Ruby on Rails 3,我想用以下代码解决一个问题,即 Web 客户端应用程序从使用 Rack 中间件的 Web 服务应用程序接收一些 JSON 数据以进行响应。
在我拥有的网络客户端应用程序模型中
response_parsed = JSON.parse(response.body)
if response_parsed["account"]
...
else
return response
end
在上面的代码中,response.body 来自使用 Rack 中间件响应 Web 客户端的 Web 服务应用程序:
accounts = Account.where(:id => ids)
[200, {'Content-Type' => 'application/json'}, accounts.to_json] # That is, response.body = accounts.to_json
数据传输正常,但出现以下错误
TypeError
can't convert String into Integer
*Application Trace*
lib/accounts.rb:107:in `[]'
107这一行对应
if response_parsed["account"]
...
问题出在哪里?如何解决?
如果我尝试调试 respons.body 我会得到
# Note: this is an array!
"[{\"account\":{\"firstname\":\"Semio\",\"lastname\":\"Iaven\"\"}}]"
【问题讨论】:
标签: ruby-on-rails ruby json http parsing