我正在为我正在教授的课程演示应用程序并遇到了一个错误。我在Sinatra应用程序中演示了POST
个请求。这是我的路线:
require "bundler/setup"
require "sinatra"
require "sinatra/reloader"
first_names = []
get '/' do
@first_names = first_names
erb :index
end
post '/add_name' do
first_names << params[:first_name]
redirect "/"
end
在index.erb
:
<h1>All Names</h1>
<% @first_names.each do |name| %>
<div><%= name %></div>
<% end %>
<h2>Enter New Name Here and Hit Enter</h2>
<form action="add_name" method="post">
<input name='first_name'>
<input type="submit" value="Add First Name"
</form>
Gemfile:
source 'https://rubygems.org'
gem "sinatra"
gem "sinatra-contrib"
请注意表单中未公开的input
标记。这确实有效。哪个好,HTML有漏洞?但是,如果我将表单的action
更改为addd_name
(拼错),那么让我感到兴奋的部分就是如此。它没有给我我预期的错误。 &#34; Sinatra并不知道这个......#34;它什么都不做。有什么想法吗?
答案 0 :(得分:0)
如果您关闭输入标记并尝试拼错操作'/addd_name'
,您将收到该小错误:)
在这种情况下,浏览器不会处理您的&#34;表格&#34;作为一种形式。从开发者控制台检查网络选项卡。当您单击“提交”按钮时,您将看到没有任何反应。
顺便说一下,如果您没有声明(例如在configure do ... end
阻止)first_names
数组中,您将会收到另一个错误 - nilClass或类似的错误。