sinatra put方法不起作用

时间:2011-09-16 12:14:41

标签: sinatra

您提交表单'put'方法用于将数据从表单发送到sinatra.put方法在app.rb中定义put方法调用erb文件显示两个值。

但是没有任何东西可以显示,有人可以帮忙。

put '/form' do

@name = params[:FirstName]
@last = params[:LastName]

erb :formact
end

表格

<form name="biodata" action="form" method="put" onsubmit="validateForm()">
code
</form>

谢谢

2 个答案:

答案 0 :(得分:9)

您不能直接从浏览器发送PUT请求,但您可以使用Sinatra的method_override选项伪造它,默认情况下以经典样式设置为true。如果您使用的是模块化样式,则必须使用enable :method_override启用它。

这会检查对名为_method的参数的传入请求,如果找到一个请求,则将调用的请求方法更改为参数值,以便应用程序的其余部分看到使用该参数进行调用HTTP方法。

put方法工作的方法是在表单中使用POST方法,但要包含名为“_method”且值为“put”的隐藏输入

<form name="biodata" action="form" method="post" onsubmit="validateForm()">
  <input type="hidden" name="_method" value="put" />
  code
</form>

这与Rails中使用的技术相同(实际上它与使用的中间件相同 - Rack::MethodOverride)。

答案 1 :(得分:3)

我认为PUT不是表单提交的有效方法。检查您的HTTP服务器日志,看看请求是否实际上是PUT个请求 - 浏览器可能会将其作为GET发送,这是默认设置。

无论如何,您应该只使用POST