rails check_box_tag 使用默认值设置检查

Posted

技术标签:

【中文标题】rails check_box_tag 使用默认值设置检查【英文标题】:rails check_box_tag set checked with default value 【发布时间】:2012-08-01 13:20:16 【问题描述】:

我目前有一个看起来像的 rails check_box_tag 调用

check_box_tag #name

我想包含一个已选中的属性,我知道我可以这样做

check_box_tag name, value, checked

但是,如果我想将其设置为选中而不明确指定 value 怎么办(我只想使用默认值)。或者类似地,如果我想指定 html 选项而不指定 checked 属性怎么办。有没有办法做到这一点?

【问题讨论】:

我不明白你为什么不想设置一个值。能给个用例吗? 或者假设我想设置一个 HTML 属性而不明确指定选中状态(我只想使用默认值) - 我相信同样的问题。 【参考方案1】:

没有办法直接做到这一点。但是check_box_tag 的实现很简单,您可以对其进行修补或创建自己的助手。

原始实现:

  def check_box_tag(name, value = "1", checked = false, options = )
    html_options =  "type" => "checkbox", "name" => name, "id" => sanitize_to_id(name), "value" => value .update(options.stringify_keys)
    html_options["checked"] = "checked" if checked
    tag :input, html_options
  end

【讨论】:

【参考方案2】:

如果要选中复选框,则

check_box_tag name, value, :checked => "checked" 

否则

check_box_tag name, value

【讨论】:

【参考方案3】:

只是想更新一下。 check_box_tag 的第三个参数是一个布尔值,表示检查状态。

check_box_tag name, value, true

【讨论】:

在这种情况下什么是“价值”? @Akron 我也有同样的问题!于是我问,答案是here和here【参考方案4】:

如果有人有布尔类型的列,那么看看这个。 is_checked?将是默认布尔值。它对我有用。

<%= hidden_field_tag :name, 'false' %> <%= check_box_tag :name, true, is_checked? %>

【讨论】:

通过使用这种技术,DOM 会产生关于 2 个具有相同 ID 的元素的错误。【参考方案5】:

check_box_tag(名称,值 = "1",选中 = false,选项 = )

例子:

check_box_tag 'receive_email', 'yes', true
# => <input checked="checked" id="receive_email" name="receive_email" type="checkbox" value="yes" />

check_box_tag 'tos', 'yes', false, class: 'accept_tos'
# => <input class="accept_tos" id="tos" name="tos" type="checkbox" value="yes" />

check_box_tag 'eula', 'accepted', false, disabled: true
# => <input disabled="disabled" id="eula" name="eula" type="checkbox" value="accepted" />

api.rubyonrails.org

【讨论】:

【参考方案6】:

如果你在value字段中传入一个“1”的值,它会传递checkbox的真实状态的值,而不考虑选中的默认值:

is_checked = <default boolean>

check_box_tag :show_defaults, '1', is_checked

(现在总是反映用户输入)

【讨论】:

有没有办法防止复选框与值一起传递状态?我得到了一组我期望的值,还有“on”这个词。

以上是关于rails check_box_tag 使用默认值设置检查的主要内容,如果未能解决你的问题,请参考以下文章

如何在未选中时使check_box_tag发布'false'或'0'参数?

Rails 上的复选框

如何传递可能未定义的变量

Rails - 为多个设计模型配置默认值

rails add_column 具有默认值但默认值不生效

Rails:如何为 Rails activerecord 模型中的属性创建默认值? [复制]