【发布时间】:2010-10-31 21:59:23
【问题描述】:
如果选中“记住我”复选框,我想将 cookie 设置为 1 年后过期。
我有一个复选框表单输入,例如:
<%= check_box_tag 'remember', '', false, :class => 'checkbox' %>
发布后价值是多少?
它是真/假还是选中还是 1 或?我在帮助程序中将值设置为 ''。
【问题讨论】:
标签: ruby-on-rails
如果选中“记住我”复选框,我想将 cookie 设置为 1 年后过期。
我有一个复选框表单输入,例如:
<%= check_box_tag 'remember', '', false, :class => 'checkbox' %>
发布后价值是多少?
它是真/假还是选中还是 1 或?我在帮助程序中将值设置为 ''。
【问题讨论】:
标签: ruby-on-rails
复选框将返回0 或1。
不要与false 和true 比较,因为这可能会给您带来问题,因为0 在Ruby 中是true。
【讨论】:
在 Rails API 文档中,它对缺失参数和隐藏字段的解决方法有帮助:
http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-check_box
check_box(object_name, method, options = {}, checked_value = "1", unchecked_value = "0")
返回一个复选框标签,用于访问分配给模板(由对象标识)的对象上的指定属性(由方法标识)。此对象必须是实例对象 (@object) 而不是本地对象。该方法旨在返回一个整数,如果该整数大于零,则选中该复选框。输入标签上的附加选项可以作为带有选项的散列传递。 checked_value 默认为 1,而默认 unchecked_value 设置为 0,便于布尔值。 明白了
HTML 规范说未选中的复选框不成功,因此 Web 浏览器不会发送它们。不幸的是,这引入了一个陷阱:如果一个 Invoice 模型有一个支付标志,并且在编辑支付发票的表单中,用户取消选中它的复选框,则不会发送支付参数。所以,任何像
这样的质量分配习语@invoice.update_attributes(params[:invoice])
不会更新标志。
为防止这种情况,助手会在复选框之前生成一个辅助隐藏字段。隐藏字段具有相同的名称,其属性模仿未选中的复选框。
这样,客户端要么只发送隐藏字段(表示复选框未选中),要么同时发送两个字段。由于 HTML 规范规定键/值对必须以它们在表单中出现的相同顺序发送,并且参数提取获取查询字符串中任何重复键的最后一次出现,这适用于普通表单。
【讨论】:
你在你的行动中得到参数
params['remember']
如果如果检查你有类似假值的参数。如果不是检查,您没有参数发送到您的操作。
【讨论】: