- ベストアンサー
チェックボックスについて(ruby)
- Rubyを使用してCGIプログラムでチェックボックスの選択された値のみを表示する方法について
- プロフィール入力ページのHTMLフォームとCGIプログラムのコードを提供
- 動作環境はruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux]
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
何をしているのか理解できないところがあるので、 まず syumi = cgi.params["hobby"] で上の方の 趣味: <input type="checkbox" name="hobby(以下省略) のチェックしている状態を受け取っているのですよね。 (CGIを使ったことはないのでチェックしたものはどのような形式で受け取るのでしょうか? Hash? Array?が分かれば考えやすいのですが) それはともかく、 その後の syumi = "" で折角受け取ったデータを消ししまっているのです。 その後の for x in str syumi = syumi + x end でstrはforの前で "映画, 音楽, スポーツ, 料理, その他 " ですので、forは1回しか回らず、syumiにそのまま入れて終了しています。 要するに、 cgi.params["hobby"]で受け取った値を捨ててしまっています。
その他の回答 (2)
- ki073
- ベストアンサー率77% (491/634)
たびたびすみません。 No.2の訂正は完全な間違いですねえ。ちゃんと確認してから書くべきでした。 forで文字列を使ったときの挙動はNo.1の記述が正解でした。 each_line(=each)と同じように行で分けられるのでした。No.2ではeach_charと同じような挙動だと勘違いしていました。
- ki073
- ベストアンサー率77% (491/634)
No.1の訂正です。 >forは1回しか回らず、syumiにそのまま入れて終了しています。 1回しかというところは間違いでした。strは配列ではなく文字列ですので一文字ずつxに渡されます。どっちみち結果は同じですが。 syumi = cgi.params["hobby"] でチェックボックスの名前が返ってこないのなら、それをもとに ary = ["映画, ", "音楽, ", "スポーツ, ", "料理, ", "その他 "] から抽出すればよいということになります。