复选框是一种表单控件,给用户一些选项,可用于启用或禁用某项功能。
<%= 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 标签可以为指定的选项框附加文字说明,还能增加选项框的点选范围,让用户更容易选中。