我目前有一个Rails的check_box_tag调用,看起来像这样:
check_box_tag #{name}
我想要添加一个checked属性,我知道可以使用下面的代码实现:
check_box_tag name, value, checked
但是如果我想设置它为已选中状态而不显式指定value
(我只想使用默认值),该怎么办呢?或者类似地,如果我想指定html选项而不指定checked
属性,有没有一种方法可以实现这个功能呢?
我目前有一个Rails的check_box_tag调用,看起来像这样:
check_box_tag #{name}
我想要添加一个checked属性,我知道可以使用下面的代码实现:
check_box_tag name, value, checked
但是如果我想设置它为已选中状态而不显式指定value
(我只想使用默认值),该怎么办呢?或者类似地,如果我想指定html选项而不指定checked
属性,有没有一种方法可以实现这个功能呢?
check_box_tag(name, value = "1", checked = false, options = {})
示例:
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" />
check_box_tag name, value, {:checked => "checked"}
check_box_tag name, value
没有直接的方法来实现它。但是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
is_checked = <default boolean>
check_box_tag :show_defaults, '1', is_checked
(现在始终反映用户输入)
<%= hidden_field_tag :name, 'false' %>
<%= check_box_tag :name, true, is_checked? %>