我想知道Rails中的复选框是如何工作的?该表在数据库中的内容是什么(整数,字符串等)?你如何给复选框提供3个不同的值,用户只能选择1(最喜欢的颜色:红色,绿色或蓝色)?
我是rails的新手,从头到尾都有一个解释,因为我看到很多例子,但他们从一开始就没有解释所有内容。
谢谢。
答案 0 :(得分:4)
复选框和数据库之间存在区别。复选框是HTML。数据库已连接到您的模型,它与复选框无关。
当您在HTML视图中使用复选框时,表单将发送一些参数。默认情况下,此参数的值为“1”(作为String)。 Rails助手还会创建一个额外的隐藏输入,它将使用与复选框输入相同的名称发送值“0”。解析参数Rails选择第一个值,因此如果选中了复选框,则为给定参数分配值“1”,如果没有,则为“0”赋值。
现在,保存在数据库中的值取决于模型中属性的类型。如果你将一个给定的字段定义为boolean,那么它将被存储为boolean(有一些魔法,因为字符串“0”在ruby中不被视为'false'),如果你将属性定义为整数,那么它将具有值1或0,如果是字符串,则为“1”或“0”。
关于复选框的这3个值,我会使用<select>
或单选按钮。
Red: <input type="radio" name="colour" value="red" checked="checked"/>
Green: <input type="radio" name="colour" value="green" />
Blue: <input type="radio" name="colour" value="blue" />
请参阅ActionView::Helpers::FormHelper#radio_button
方法。