首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sinatra未定义的方法'rewind‘

sinatra未定义的方法'rewind‘
EN

Stack Overflow用户
提问于 2011-07-04 17:46:03
回答 1查看 491关注 0票数 0

我正在尝试将我的Android应用程序中的一些数据发布到我电脑上的Sinatra。Sinatra通过以下方式监听:

代码语言:javascript
复制
post '/upload' do
    puts "*****************************************"
    puts "!!!!!!!! #{params.inspect}"
end

并失败,出现以下错误:

代码语言:javascript
复制
ERROR NoMethodError: undefined method `rewind' for "ho":String
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/utils.rb:576:in`block in parse_multipart'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/utils.rb:499:in`loop'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/utils.rb:499:in`parse_multipart'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/request.rb:270:in `parse_multipart'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/request.rb:148:in `POST'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/methodoverride.rb:15:in `call'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.2.6/lib/sinatra/base.rb:1272:in `block in call'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.2.6/lib/sinatra/base.rb:1303:in `synchronize'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.2.6/lib/sinatra/base.rb:1272:in `call'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/content_length.rb:13:in `call'
        D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/handler/webrick.rb:52:in `service'
        D:/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
        D:/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
        D:/Ruby192/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'

post参数是{"hey" => "ho"}。我打印出了rack/utils.rb中的body变量,并获得了"ho",我认为这就是Sinatra阻塞的原因。不过,我不知道为什么。投递到其他服务器成功。知道我哪里做错了吗?

我可以发布java代码,但是和java一样,它非常冗长。我也认为这不是问题所在,因为正如我所提到的,它确实可以成功地发布到远程服务器。

EN

回答 1

Stack Overflow用户

发布于 2011-07-04 22:27:33

代码语言:javascript
复制
post '/upload' do
    puts "*****************************************"
    puts "!!!!!!!! #{params.inspect}"
end

Sinatra将始终尝试使用最后返回的值作为数据进行解析,然后将其作为http数据发送。这里你的最后一条指令是返回nilputs "!!!!!!!! #{params.inspect}"

代码语言:javascript
复制
post '/upload' do
    puts "*****************************************"
    puts "!!!!!!!! #{params.inspect}"
    "Information received"
end

这里Sinatra有一些字符串可以使用,并且很高兴

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6569770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档