【问题标题】:sinatra put method is not workingsinatra put 方法不起作用
【发布时间】:2011-09-16 12:14:40
【问题描述】:

在提交表单时,'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>

谢谢

【问题讨论】:

    标签: sinatra


    【解决方案1】:

    您不能直接从浏览器发送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)。

    【讨论】:

      【解决方案2】:

      我不认为PUT 是表单提交的有效方法。检查您的 HTTP 服务器日志并查看请求是否实际以 PUT 请求的形式发送 - 浏览器可能以 GET 发送它们,这是默认设置。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-08
        • 1970-01-01
        • 2013-11-16
        • 2014-05-27
        • 2017-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多