チェックボックスについて(ruby)
cgiのプログラムでチェックボックスについてわからないことがあります。 今書いてある、プログラムだとすべての値を受け取ってしまいます。 選択されたものだけ表示させるようにさせたいと思っています。そのプログラムfor文で書いているのですが、どのように書いたらよいのでしょうか? 教えてください、お願いします!
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<title>プロフィール入力ページ</title>
</head>
<body>
プロフィールを入力してください。<br>
<form method="GET" action="http://profile2.cgi">
名前: <input type="text" name="name">
<br>
<br>
性別: <input type="radio" name="sex" value="男性">男
<input type="radio" name="sex" value="女性">女
<input type="radio" name="sex" value="その他">その他
<br>
<br>
趣味: <input type="checkbox" name="hobby" value="映画">映画
<input type="checkbox" name="hobby" value="音楽">音楽
<input type="checkbox" name="hobby" value="スポーツ">スポーツ
<input type="checkbox" name="hobby" value="料理">料理
<input type="checkbox" name="hobby" value="その他">その他
<br>
<br>
<br>
<input type="submit" value="送信">
</form>
</body>
</html>
#!/usr/local/bin/ruby
print "Content-type: text/html; charset=euc-jp\n\n"
$KCODE = "e"
require "cgi"
cgi = CGI.new
namae = cgi["name"]
sei = cgi["sex"]
syumi = cgi.params["hobby"]
ary = ["映画, ", "音楽, ", "スポーツ, ", "料理, ", "その他 "]
str = ary[0] + " " + ary[1] + " " + ary[2] + " " + ary[3] + " " + ary[4] + " "
syumi = ""
for x in str
syumi = syumi + x
end
print <<EOS
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<title>プロフィールの確認</title>
</head>
<body>
名前: #{namae}
<br>
<br>
性別: #{sei}
<br>
<br>
趣味: #{syumi}
</body>
</html>
EOS
動作環境はruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux]になります。
補足
ご連絡有難うございます。 上記の確認をやってみました。 最初の # s = getSinitizedString(s) #コメントアウト msg = "あなたは、\"" # + s + "\"と書きました。" #+s以降をコメントアウト は、英数の場合は表示されますが、日本語の場合は表示なし(白紙)の状態です。 次に puts __ENCODING__ #スクリプトのコード。-Ksが効いているかの確認 puts s.encoding # 入力した文字列のコード。 puts msg.encoding # スクリプトに直接書いた文字列のコード をコードに追加したところ、 英数半角の場合は Windows-31J UTF-8 Windows-31J となりました。 2番目の s がUTF-8になっています。このあたりが悪さをしているのですか。 日本語を入力した場合は、Windows-31J だけが表示され、残りは出てきません。 ruby内部でエラーをなってしまっていると思われます。 もう少しこちらでも調べてみます。 とりあえず状況を補足させていただきました。