PHP と Ruby でフォームの値を配列で取得する。
<label><input type="checkbox" name="color" value="white">白</label>みたいな感じの要素が form の中にある HTML から送られてきた値をどう取得すればいいか、という話。
<label><input type="checkbox" name="color" value="yellow">黄</label>
<label><input type="checkbox" name="color" value="blue">青</label>
<label><input type="checkbox" name="color" value="red">赤</label>
例えばこれだと、color という名前の配列に選択された値が格納されていてほしい、というのが前提です。
PHP だと、HTML の側で input の name 属性に color[] を指定してやると
$_POST["color"][0] のようにアクセスできます。
ループをまわせば順にこの例だと選ばれた色について処理できます。
HTML フォームで配列を使用するにはどうすればよいですか? (PHP Manual)
Ruby で同じようなことをするにはどうすれば良いのか調べてみました。
form = CGI.newでは、複数のチェックがあっても初めのひとつの値が、チェックの数だけ繰り返し処理されてしまいます。
form["color"].each do |i|
# 何か処理
end
これを回避するには
form["color"].to_a.each do |i|
form.params["color"].each do |i|のどちらかのようにすれば良いようです。
[ruby-list:39791] CGIでHTMLのフォームの同一名オプションの配列の値の取り出し方
[ruby-list:39792] Re: CGIでHTMLのフォームの同一名オプションの配列の値の取り出し方
[ruby-list:39793] Re: CGIでHTMLのフォームの同一名オプションの配列の値の取り出し方
by tokage-shippo
| 2008-11-21 20:23
| プログラミング
