为什么这个`POST`请求​​工作而不起作用

时间:2016-04-13 21:19:46

标签: ruby sinatra

我正在为我正在教授的课程演示应用程序并遇到了一个错误。我在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;它什么都不做。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果您关闭输入标记并尝试拼错操作'/addd_name',您将收到该小错误:)

在这种情况下,浏览器不会处理您的&#34;表格&#34;作为一种形式。从开发者控制台检查网络选项卡。当您单击“提交”按钮时,您将看到没有任何反应。

顺便说一下,如果您没有声明(例如在configure do ... end阻止)first_names数组中,您将会收到另一个错误 - nilClass或类似的错误。