【问题标题】:How does the argument "value" in check_box_tag work?check_box_tag 中的参数“值”如何工作?
【发布时间】:2021-08-05 20:18:03
【问题描述】:

check_box_tag 的文档如下:

check_box_tag(name, value = "1", checked = false, options = {}) public

创建一个复选框表单输入标签。

value 参数是什么?

我在自己的复选框表单中为value 参数提供了许多不同的值,但复选框的工作方式似乎相同(有效,我只想知道value 在做什么?)。

看来some others也被它迷惑了。

示例

它们在我的应用程序中做同样的事情(它们都完美地工作,这是我没有预料到的):

<%= check_box_tag :approved, "hi there", user.approved? %>
<%= check_box_tag :approved, "1", user.approved? %>

【问题讨论】:

  • 这两者的 HTML 完全相同,你能展示一下它们的 HTML 输出是什么吗? (对于这两个例子,下面的第一个答案是什么?)
  • @RockwellRice 感谢您的帮助。我最终使用了check_box(而不是check_box_tag),所以我不再试图弄清楚了。但令人惊讶的是,value 参数似乎并没有影响表单的可操作性——当提交检查时,它会将 db 中的布尔值设置为 true,而当未检查提交时,它会将布尔值设置为 false (即使value 是故意愚蠢的,比如“你好”)。
  • 如果你有一个布尔列,实际的转换发生在模型的后面。除了 '0''false''FALSE''f''F' 之外的任何真值都是 true。 '' 被视为零。 stackoverflow.com/a/60769537/544825
  • @max 如果我将问题改写为“check_box_tag 中的值如何工作?”,您愿意将您的评论变成答案吗?我觉得我不是唯一一个不这样做的人知道它是如何工作的,所以它也可能对其他人有用。

标签: ruby-on-rails ruby-on-rails-6


【解决方案1】:

value 参数指的是 db 中的布尔值。

  • 如果未选中该复选框,则值为“0”,布尔值将设置为false
  • 如果您选中该复选框,则该值将为“1”,布尔值将设置为true

这是复选框在 Rails 中的工作方式,它不介意您是否要传递自定义值,如 value='ilovemydog' 或其他内容,它始终引用“0”或“1”。

【讨论】:

    【解决方案2】:

    我对 ERB 没有太多经验,但该方法被转换为简单的 HTML

    <input id="accept" name="accept" type="checkbox" value="1" />
    

    在表单中使用 input 标签时使用 value 属性,现在当表单提交并选中复选框时,值作为“accept=1”传递

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多