Ruby Hash:无法将String转换为Integer TypeError

时间:2013-12-09 18:55:52

标签: ruby hash sinatra ruby-datamapper

目前收到Ruby Hash: can't convert String into Integer错误。代码在edit_id行上失败。

我已尝试过许多不同的解决方案,这些解决方案来自SE上已发布的类似问题,但不幸的是,这些问题都没有发挥作用。

哈希:

{"downloadID"=>115, "PageID"=>nil, "title"=>"hi", "dlLink"=>"http://www.a.com", "imgSrc"=>"http://www.a.com", "caption"=>"aaaa", "dlLive"=>nil, "createdAt"=>nil, "user_id"=>7}

代码:

#edit download
put '/view1/downloadedit' do
  data = JSON.parse(request.body.read)
  puts data
  edit_id = data["downloadID"]
  puts edit_id
  @download = Download.get(:download_id => edit_id)
  puts data
  if @download.update(data)
    status 201
    puts 'edit saved okay'
  else
    status 201
    puts 'edit failed to SAVE'
  end
end

1 个答案:

答案 0 :(得分:7)

JSON.parse(request.body.read)为您提供一个哈希数组。所以修复是edit_id = data[0]["downloadID"]。写p data而不是puts data,您会看到data是一个哈希数组。