在Sinatra处理POSTDATA

Vin*_*lli 2 ruby post http postdata sinatra

我正在尝试在Sinatra中创建一个页面,以便您发布的任何内容(在参数名称"command"下)都会回显给您.这是我目前的做法:

post '/eval' do
  "I got #{params[:data][:command]}."
end
Run Code Online (Sandbox Code Playgroud)

如果我尝试将任何内容发布到/ eval,则会导致内部服务器错误.我究竟做错了什么?

sin*_*axi 11

问题是你的[:data]参数是nil.解决这个问题的一种方法是删除对它的引用[:data].试试这个.

require "rubygems"
require "sinatra"

post '/eval' do
  "I got #{params[:command]}."
end
Run Code Online (Sandbox Code Playgroud)

您可以在命令行上使用curl对此进行测试(如果您使用的是基于unix的系统).

curl http://localhost:4567/eval -F "command=hello"
Run Code Online (Sandbox Code Playgroud)

将来,如果您在问题中提供错误的堆栈跟踪,那将对其他人有所帮助.