@Marchan4 (Marchan4)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

WebブラウザがHTMLフォームに入力された名前や年齢をWebブラウザにリクエストしてもWebサーバがレスポンスしない。

macOSでAtomというテキストエディタで、

HTMLフォームに名前と年齢を入力すると挨拶して頂けるだけのWebアプリを作らせて頂いております。

ファイル/フォルダ構成は下記のようになります。

sinatra-web
└ views/
   └ index.erb
└ .ruby-version
└ app.rb

まず、.ruby-versionは以下のようになっております。

3.0.0

それから、app.rbには

require 'sinatra'

get '/' do
  erb :index
end

post '/' do
  erb :index
end

と記させていただきました。

あと、views/index.erbには

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>タイトル</title>
  </head>
  <body>
    <form action="/" method="POST">
      <label>名前: <input type="text" name="target_name"></label>
      <label>年齢: <input type="number" age="target_age"></label>
      <input type="submit" value="送信">
    </form>

    <% name = params['target_name'] %>
    <% age = params['target_age'] %>
    <% time_japan = Time.now %>
    <p>今は<%= time_japan.hour %></p>
    <% if 6 <= time_japan.hour && time_japan.hour < 12 %>
      <p>おはよう、<%= name %>さん(<%= age %>歳)</p>
    <% elsif 12 <= time_japan.hour && time_japan.hour < 18 %>
      <p>こんにちは、<%= name %>さん(<%= age %>歳)</p>
    <% else %>
      <p>こんばんは,<%= name %>さん(<%= age %>歳)</p>
    <% end %>
  </body>
</html>

と記させていただきました。

それから、Webサーバ(Puma)を起動させるためにターミナルに下記のコマンドを入力させて頂きました。
$ ruby app.rb -o $IP -p $PORT

ターミナル画面に下記のようなログが出ました。

== Sinatra (v2.1.0) has taken the stage on 4567 for development
with backup from Puma
Puma starting in single mode...
* Puma version: 5.2.1 (ruby 3.0.0-p0) ("Fettisdagsbulle")
*  Min threads: 0
*  Max threads: 5
*  Environment: development
*          PID: 61781
== Sinatra has ended his set (crowd applauds)
/Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/ge
ms/puma-5.2.1/lib/puma/binder.rb:288:in `initialize': getaddrinf
o: nodename nor servname provided, or not known (SocketError)
         from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/binder.rb:288:in `new'
        from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/binder.rb:288:in `add_tcp_li
stener'
        from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/binder.rb:169:in `block in p
arse'
        from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/binder.rb:152:in `each'
        from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/binder.rb:152:in `parse'

        from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/runner.rb:144:in `load_and_b
ind' 
        from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/single.rb:44:in `run'
        from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/puma/launcher.rb:181:in `run'
        from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/puma-5.2.1/lib/rack/handler/puma.rb:72:in `run'
        from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1565:in `start
_server'
        from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1499:in `run!'
        from /Users/〇〇〇〇/.rbenv/versions/3.0.0/lib/ruby/
gems/3.0.0/gems/sinatra-2.1.0/lib/sinatra/main.rb:45:in `block i
n <module:Sinatra>'

それからターミナルに下記のコードを入力しました。
$ ruby app.rb

ターミナル画面に下記のようなログが出ました。

== Sinatra (v2.1.0) has taken the stage on 4567 for development
with backup from Puma
Puma starting in single mode...
* Puma version: 5.2.1 (ruby 3.0.0-p0) ("Fettisdagsbulle")
*  Min threads: 0
*  Max threads: 5
*  Environment: development
*          PID: 61871
* Listening on http://127.0.0.1:4567
* Listening on http://[::1]:4567
Use Ctrl-C to stop

上記のようなログを維持したまま、views/index.erbをAtomテキストエディタのPackagesのPreview HTMLのEnable Previewを押させて頂いたら、下記の画面が表示されました。

Preview画面.png

それから名前と年齢の入力欄に記入をさせて頂きました。下記の通りです。

入力画面.png

そして送信ボタンを押させて頂きました。送信結果は下記の通りになりました。
入力結果.png

タイトルの通り、WebブラウザがHTMLフォームに入力された名前や年齢をWebブラウザにリクエストしてもWebサーバがレスポンスしませんでした。

0 likes

No Answers yet.

Your answer might help someone💌