访问控制器中的create方法时出现WEBrick :: HTTPStatus :: LengthRequired错误

Chr*_*ani 29 controller ruby-on-rails

我有一个非常简单的控制器设置:

class LibrariesController < ApplicationController

...

  def create
    @user.libraries << Library.new(params)
    @user.save
    render :json => "success!"
  end

...

end
Run Code Online (Sandbox Code Playgroud)

基本上,每当我尝试使用HTTParty.post访问LibrariesController的create方法时,我在服务器上得到一个WEBrick :: HTTPStatus :: LengthRequired错误.甚至没有访问该方法!这是堆栈跟踪(这是完整的输出服务器端 - 注意控制器甚至没有被访问):

[2010-04-16 00:35:39] ERROR WEBrick::HTTPStatus::LengthRequired
[2010-04-16 00:35:39] ERROR HTTPRequest#fixup: WEBrick::HTTPStatus::LengthRequired occured.
[2010-04-16 00:35:39] ERROR NoMethodError: private method `gsub!' called for #<Class:0x2362160>
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/htmlutils.rb:17:in `escape'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/httpresponse.rb:232:in `set_error'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/httpserver.rb:70:in `run'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:162:in `start'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:95:in `start'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:92:in `each'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:92:in `start'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:23:in `start'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:82:in `start'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/handler/webrick.rb:14:in `run'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/commands/server.rb:111
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    script/server:3
Run Code Online (Sandbox Code Playgroud)

我正在运行rails 2.3.5和ruby 1.8.7.任何帮助将不胜感激.如果您需要更多详细信息,请告诉我们.

Mar*_*rom 69

当我做一个空身的POST时,我得到了这个.我正在使用卷曲.

就像是:

curl -X POST http://url/
Run Code Online (Sandbox Code Playgroud)

我添加了-d'',它解决了这个问题.

curl -X POST http://url/ -d ''
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您可能需要在HTTParty.post中的一个:body =>''属性中添加一些内容


oma*_*oma 8

使用:body而不是:query发布和发出请求.


kon*_*ung 1

我不知道这是否仍然与 Webrick 相关,或者是否已修复,但您收到的错误有一个已知问题Read line 2 on this TODO page on RubyForge

您是否尝试过gem install mongrel使用 mongrel 或其他 ruby​​ 服务器运行它?