在多部分表单提交中,Sinatra“无法将nil转换为Hash”

时间:2012-05-07 12:58:39

标签: ruby sinatra

我试图做一个简单的文件上传页面,但不断获取"无法将nil转换为Hash" (file:request.rb location:merge line:221)。这种情况发生在Windows和Ubuntu上。 Ruby 1.9.3,Sinatra 1.3.2。我还注意到POST数据显然是空的,无论我尝试上传请求的大小文件总是不到70k。

处理程序没有做太多事情:

get "/upload" do
  erb :upload
end      


post '/upload' do
  tempfile = params['file'][:tempfile]
  filename = params['file'][:filename]
  File.copy(tempfile.path, "./files/#{filename}")
  redirect '/'
end

表单如下:

   <div id="bodydiv">
    <h1>file upload page</h1>
    File to upload:

    <form method="post" action="" enctype="multipart/form-data">
        <input type="file" id="file" />
        <input type="hidden" value="tokenstuff" id="hiddenThing" />
        <input type="submit" value="upload" id="commit" />
    </form>

   </div>

1 个答案:

答案 0 :(得分:2)

您必须在文件输入中添加name属性 我不知道为什么,如果有人可以解释这一点。感谢。