Class: ActionView::Helpers::InstanceTag

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_form/action_view_extensions/builder.rb

Overview

Backport Rails fix to checkbox tag element, which does not generate the hidden input when given nil as unchecked value. This is to make SimpleForm collection check boxes helper to work fine with nested boolean style, when they are wrapped in labels. Without that, clicking in the label would actually change the hidden input, instead of the checkbox. FIXME: remove when support only Rails >= 3.2.2.

Instance Method Summary collapse

Instance Method Details

#to_check_box_tag(options = {}, checked_value = "1", unchecked_value = "0") ⇒ Object



333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
# File 'lib/simple_form/action_view_extensions/builder.rb', line 333

def to_check_box_tag(options = {}, checked_value = "1", unchecked_value = "0")
  options = options.stringify_keys
  options["type"]     = "checkbox"
  options["value"]    = checked_value
  if options.has_key?("checked")
    cv = options.delete "checked"
    checked = cv == true || cv == "checked"
  else
    checked = self.class.check_box_checked?(value(object), checked_value)
  end
  options["checked"] = "checked" if checked
  if options["multiple"]
    add_default_name_and_id_for_value(checked_value, options)
    options.delete("multiple")
  else
    add_default_name_and_id(options)
  end
  hidden = unchecked_value ? tag("input", "name" => options["name"], "type" => "hidden", "value" => unchecked_value, "disabled" => options["disabled"]) : "".html_safe
  checkbox = tag("input", options)
  hidden + checkbox
end