私が教えていたクラスのアプリをデモしていて、バグに遭遇しました。私はSinatraアプリケーションでPOST
リクエストをデモしていました。 index.erb
でなぜこの「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
:
<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
(間違っている)に変更すると、私のところに飛びつく部分があります。私には間違いがありません。 "シナトラはこのディディを知らない..."ただ何もしない。何かご意見は?
終了タグがない(Enterを押すだけではなく、ボタンをクリックして)機能していますか?私は何も起こっていないと思うのは、 '>'が見つからないということは、ブラウザが ''という入力を2つの属性として解析する原因になっていると思います。これは無効です。 '/') HTMLでは、 'input'要素は' form'属性を持つことができます。その結果、送信ボタンは親フォームの代わりに存在しないフォームに関連付けられているので、それをクリックすると効果があります。 – matt
スタックオーバーフローへようこそ。 「[mcve]」をお読みください。コードに構文エラーがあります。 'first_names'の両方の出現は未定義ですが、' @ first_names'は 'get'ハンドラでのみ割り当てられます。 @mattによれば、 '>'の行末が見当たりませんが、ブラウザはいくつかの修正を行い、ページを正しくレンダリングできるかもしれません。それでも、HTMLを構文上正しいものにする必要があります。 –
私はちょうど問題の一部である関連コードを入れました。私は私の質問を拡張することができます、私は理解して、私は最小にしようとしていた。 –