質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

1回答

1862閲覧

Rubyでクエリの表示ができません

hfhff

総合スコア8

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2015/04/22 16:23

編集2015/04/23 03:37

Ruby初心者です
るびまのCGI入門をやっているのですが、「フォームのデータを表示させる」(http://magazine.rubyist.net/?0012-CGIProgrammingForRubyBeginners-2#l10)
という項目ができません
初心者ながらprintを多用したbar_echo1.rbのプログラムはあまり綺麗ではないと感じ、ERBを使って以下のbar_echo1.erbのように書き直しました
それに伴い、bar_echo1.htmlにも少し手を加えました
これでクエリを表示できるかと思ったのですが、何も表示されませんでした
どこが間違っているかわかる方いましたら、ぜひ教えてください
(点線以下2つが自分で考えたプログラムです)

##bar_echo1.html(オリジナル)

lang

1 2<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 3 "http://www.w3.org/TR/html4/strict.dtd"> 4<html lang="ja"> 5<head> 6 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 7 <title>form</title> 8</head> 9<body> 10<form action="./bar_echo1.rb" method="get"> 11<div> 12フォームです。<br> 13<input name="t" value=""> 14<input type="submit" name="s" value="Button"> 15</div> 16</form> 17</body> 18</html>

##bar_echo1.html(改良後)

lang

1<!DOCTYPE HTML> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>form</title> 6</head> 7<body> 8<form action="./bar_echo1.erb" method="get"> 9<div> 10フォームです。<br> 11<input name="t" value=""> 12<input type="submit" name="s" value="Button"> 13</div> 14</form> 15</body> 16</html>

##bar_echo1.erb

lang

1<html> 2<head></head> 3<body> 4<%= ENV['QUERY_STRING'] %> 5</body> 6</html>

追記です
erbを使いたかったのとかなり前のプログラムだったので付録(デフォルト)のwebrickでは無く自前のwebrickを書いたのですがそれが原因の気がします...

lang

1##myserver.rb(自前) 2require 'webrick' 3 4config = { 5 :Port => 8099, 6 :DocumentRoot => './', 7} 8 9WEBrick::HTTPServlet::FileHandler.add_handler("erb", WEBrick::HTTPServlet::ERBHandler) 10 11server = WEBrick::HTTPServer.new(config) 12 13server.config[:MimeTypes]["erb"] = "text/html" 14 15trap(:INT) do 16 server.shutdown 17end 18 19server.start

##server.rb(デフォルト)

lang

1require 'webrick' 2 3rrr = WEBrick::HTTPServlet::CGIHandler::Ruby 4$ruby = $ruby || rrr 5 6module WEBrick 7 module HTTPServlet 8 FileHandler.add_handler("rb", CGIHandler) 9 end 10end 11 12def start_webrick(config = {}) 13 conf = { 14 :Port => 8080, 15 :BindAddress => '127.0.0.1', 16 :CGIInterpreter => $ruby, 17 } 18 config.update(conf) 19 server = WEBrick::HTTPServer.new(config) 20 yield server if block_given? 21 ['INT', 'TERM'].each {|signal| 22 trap(signal) {server.shutdown} 23 } 24 server.start 25end 26 27start_webrick {|server| 28 cgi_dir = File.dirname( File.expand_path(__FILE__) ) 29 server.mount("/", WEBrick::HTTPServlet::FileHandler, cgi_dir, {:FancyIndexing=>true}) 30}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

erbって、デフォルトで処理されましたっけ………?
とりあえずhttpd(apacheかな?)のエラーメッセージを見ましょう。 /var/log/apache2/error_log とかそのへんにあるはず。

投稿2015/04/22 17:05

AknEp

総合スコア200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hfhff

2015/04/22 17:52

>>erbって、デフォルトで処理されましたっけ………? require 'erb'してみましたがダメでした また、このプログラムの前にも記載のプログラムをerbを使って書き直してみたのですが、そのときはrequireもせず動きました(まったく見当違いのことを言っていたらすみません...) >>とりあえずhttpd(apacheかな?)のエラーメッセージを見ましょう。... /var/log/apache2 の下には何もありませんでした webrickで動かしているのですが、そこに表示されるメッセージでも同じことですか? 一応そこには(bar_echo1.htmlのフォームにappleと入力すると) "localhost - - [23/Apr/2015:02:42:21 JST] "GET /bar_echo1.erb?t=apple&s=Button HTTP/1.1" 200 16 http://localhost:8099/bar_echo1.html -> /bar_echo1.erb?t=apple&s=Button"というメッセージがありました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問