こんな配列化は意味がないことに気づいたので加筆。
check_box_tag
以下のように記述すると、<%= check_box_tag "print" %>印刷する生成される HTML は
<input id="print" name="print" type="checkbox" value="1" />印刷するとなる。
submit した際の parameter 値は
選択時 => "print"=>"1" 非選択時 => "print"=>nilとなる。
ruby では false と nil は false 扱いとなるため、単純に if で params[:print] と判定すれば
ON, OFF の判定ができるため、簡単に記述できる。
check_box
以下のように記述すると、<%= check_box "print", "enabled" %>印刷する生成される HTML は
<input name="print[enabled]" type="hidden" value="0" /><input id="print_enabled" name="print[enabled]" type="checkbox" value="1" />印刷するとなる。
submit した際の parameter 値は
選択時 => "print"=>{"enabled"=>"0"} 非選択時 => "print"=>{"enabled"=>"1"}となる。
要は、check_box タグを利用すると、checkbox を Hash でパラメータ渡しできるようになる。
なので、配列化したい場合は、それぞれの項目に名前をつけてやって Hash の key として扱ってやればよい。
例) ディナーのコースを選択する。必要なコースがあればチェックをつける
<%= check_box "dinner", "zensai" %>前菜 <%= check_box "dinner", "supe" %>スープ <%= check_box "dinner", "main" %>メインディッシュ <%= check_box "dinner", "dezart" %>デザート <%= check_box "dinner", "drink" %>ドリンクこれで、ディナーパラメータ値にハッシュとして配列化されてコントローラに渡ってくる。
無理に配列化するメリットは何もない。意味不明な index で値を取得する必要も
ないし、未選択時に飛んでこないなんてこともない。
0 件のコメント:
コメントを投稿