現在行っていること
Webrickで、フォームからパラメータを取得しようとしたら、以下のエラー文が表示されました。
ブラウザ
Internal Server Error undefined method `username' for #<Hash:0x00007fc3818a0ab0> WEBrick/1.4.2 (Ruby/2.6.3/2019-04-16) at localhost:8000
解決したいこと
usernameメソッドが見つからないとあるのでそれを紐付けたいです。
以下がコードです。
form.html
<html> <head> <meta http-equiv="content-type" charset="UTF-8"> </head> <body> <p>GETで送る</p> <form action="/get_form" method="GET"> <ul> <label for="username">ユーザー名:</label> <input type="text" id="username" name="username"> <br> <label for="userage">年齢:</label> <input type="text" id="userage" name="userage"> <br> <button type="submit" value="送信">送信</button> </ul> </form> <p>POSTで送る</p> <form action="/post_form" method="post"> <ul> <label for="username">ユーザー名:</label> <input type="text" id="username" name="username"> <br> <label for="userage">年齢:</label> <input type="text" id="userage" name="userage"> <br> <button type="submit" value="送信">送信</button> </ul> </form> </body> </html>
webrick.rb
# webrick.rb require 'webrick' server = WEBrick::HTTPServer.new({ :DocumentRoot => './', :BindAddress => '127.0.0.1', :Port => 8000 }) server.mount_proc("/time") do |req, res| body = "<html><meta charset='utf-8'><body>#{Time.new}</body></html>" res.status = 200 res['Content-Type'] = 'text/html' res.body = body end server.mount_proc("/get_form") do |req, res| body = "<html><meta charset='utf-8'><body>" body = "クエリパラメーターは#{req.query}です<br>" body = "こんにちは#{req.query.username}さん。あなたの年齢は#{req.query.userage}ですね" body = "</body</html>" res.status = 200 res['Content-Type'] = 'text/html' res.body = body end server.mount_proc("/post_form") do |req, res| req.query body ="<html><meta charset='utf-8'></body>" body = "フォームデータは#{req.query}です" body = "こんにちは#{req.query.name}さん</p><p>あなたの年齢は#{req.query.age}ですね" body = "</body></html>" res.status = 200 res['Content-Type'] = 'text/html' res.body = body end server.start
試したこと
form.html
のmethod="GET"
を、違うとは思いながらmethod=username
に変えてみましたがうまくいきませんでした。webrick.rb
のreq.query.username
の書き方も自信がないので文法が間違っているのではないかとも考えました。
ご回答いただけると嬉しいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。