【发布时间】:2011-05-31 19:09:09
【问题描述】:
我想知道 Rails 中的复选框是如何工作的?数据库中的表是什么(整数、字符串等)?您如何为复选框提供 3 个不同的值,而用户只能选择 1 个(最喜欢的颜色:红色、绿色或蓝色)?
我是 Rails 新手,从头到尾进行解释会有所帮助,因为我看到了很多示例,但它们并没有从头开始解释所有内容。
谢谢。
【问题讨论】:
标签: ruby-on-rails
我想知道 Rails 中的复选框是如何工作的?数据库中的表是什么(整数、字符串等)?您如何为复选框提供 3 个不同的值,而用户只能选择 1 个(最喜欢的颜色:红色、绿色或蓝色)?
我是 Rails 新手,从头到尾进行解释会有所帮助,因为我看到了很多示例,但它们并没有从头开始解释所有内容。
谢谢。
【问题讨论】:
标签: ruby-on-rails
复选框和数据库是有区别的。复选框是 HTML。数据库连接到您的模型,它与复选框无关。
当您在 HTML 视图中使用复选框时,您的表单将发送一些参数。默认情况下,此参数将具有值“1”(作为字符串)。 Rails 助手还创建了一个额外的隐藏输入,它发送与复选框输入同名的值“0”。解析参数 Rails 会选择第一个值,因此如果复选框已被选中,则给定参数赋值为“1”,如果未选中,则赋值为“0”。
现在,保存在数据库中的值取决于模型中属性的类型。如果您将给定字段定义为布尔值,那么它将存储为布尔值(有一些魔法,因为字符串“0”在 ruby 中不被视为“假”),如果您将属性定义为整数,那么它将具有值 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 方法。
【讨论】: