复选框是一种表单控件,给用户一些选项,可用于启用或禁用某项功能。
<%= check_box_tag(:pet_dog) %>
<%= label_tag(:pet_dog, "I own a dog") %>
<%= check_box_tag(:pet_cat) %>
<%= label_tag(:pet_cat, "I own a cat") %>
生成的 HTML 如下:
<input id="pet_dog" name="pet_dog" type="checkbox" value="1" />
<label for="pet_dog">I own a dog</label>
<input id="pet_cat" name="pet_cat" type="checkbox" value="1" />
<label for="pet_cat">I own a cat</label>
check_box_tag 方法的第一个参数是 name
属性的值。第二个参数是 value
属性的值。选中复选框后,value
属性的值会包含在提交的表单数据中,因此可以通过 params
获取。
单选框
单选框有点类似复选框,但是各单选框之间是互斥的,只能选择一组中的一个:
<%= radio_button_tag(:age, "child") %>
<%= label_tag(:age_child, "I am younger than 21") %>
<%= radio_button_tag(:age, "adult") %>
<%= label_tag(:age_adult, "I'm over 21") %>
生成的 HTML 如下:
<input id="age_child" name="age" type="radio" value="child" />
<label for="age_child">I am younger than 21</label>
<input id="age_adult" name="age" type="radio" value="adult" />
<label for="age_adult">I'm over 21</label>
和 check_box_tag
方法一样,radio_button_tag
方法的第二个参数也是 value
属性的值。因为两个单选框的 name
属性值一样(都是 age
),所以用户只能选择其中一个单选框,params[:age]
的值不是"child"
就是 "adult"
注意:复选框和单选框一定要指定 label 标签。label 标签可以为指定的选项框附加文字说明,还能增加选项框的点选范围,让用户更容易选中。