mirror of https://github.com/rails/rails
Merge pull request #40499 from seanpdoyle/aria-omit-empty
ARIA attributes: serialize empty Hash and Array as nil
This commit is contained in:
commit
afb9145a59
|
@ -84,7 +84,15 @@ module ActionView
|
|||
value.each_pair do |k, v|
|
||||
next if v.nil?
|
||||
|
||||
v = (v.is_a?(Array) || v.is_a?(Hash)) ? safe_join(TagHelper.build_tag_values(v), " ") : v.to_s
|
||||
case v
|
||||
when Array, Hash
|
||||
tokens = TagHelper.build_tag_values(v)
|
||||
next if tokens.none?
|
||||
|
||||
v = safe_join(tokens, " ")
|
||||
else
|
||||
v = v.to_s
|
||||
end
|
||||
|
||||
output << sep
|
||||
output << prefix_tag_option(key, k, v, escape)
|
||||
|
|
|
@ -449,11 +449,11 @@ class TagHelperTest < ActionView::TestCase
|
|||
def test_aria_attributes
|
||||
["aria", :aria].each { |aria|
|
||||
assert_dom_equal '<a aria-a-float="3.14" aria-a-big-decimal="-123.456" aria-a-number="1" aria-truthy="true" aria-falsey="false" aria-array="1 2 3" aria-hash="a b" aria-tokens="a b" aria-string-with-quotes="double"quote"party"" aria-string="hello" aria-symbol="foo" />',
|
||||
tag("a", aria => { nil: nil, a_float: 3.14, a_big_decimal: BigDecimal("-123.456"), a_number: 1, truthy: true, falsey: false, string: "hello", symbol: :foo, array: [1, 2, 3], hash: { a: true, b: "truthy", falsey: false, nil: nil }, tokens: ["a", { b: true, c: false }], string_with_quotes: 'double"quote"party"' })
|
||||
tag("a", aria => { nil: nil, a_float: 3.14, a_big_decimal: BigDecimal("-123.456"), a_number: 1, truthy: true, falsey: false, string: "hello", symbol: :foo, array: [1, 2, 3], empty_array: [], hash: { a: true, b: "truthy", falsey: false, nil: nil }, empty_hash: {}, tokens: ["a", { b: true, c: false }], empty_tokens: [{ a: false }], string_with_quotes: 'double"quote"party"' })
|
||||
}
|
||||
|
||||
assert_dom_equal '<a aria-a-float="3.14" aria-a-big-decimal="-123.456" aria-a-number="1" aria-truthy="true" aria-falsey="false" aria-array="1 2 3" aria-hash="a b" aria-tokens="a b" aria-string-with-quotes="double"quote"party"" aria-string="hello" aria-symbol="foo" />',
|
||||
tag.a(aria: { nil: nil, a_float: 3.14, a_big_decimal: BigDecimal("-123.456"), a_number: 1, truthy: true, falsey: false, string: "hello", symbol: :foo, array: [1, 2, 3], hash: { a: true, b: "truthy", falsey: false, nil: nil }, tokens: ["a", { b: true, c: false }], string_with_quotes: 'double"quote"party"' })
|
||||
tag.a(aria: { nil: nil, a_float: 3.14, a_big_decimal: BigDecimal("-123.456"), a_number: 1, truthy: true, falsey: false, string: "hello", symbol: :foo, array: [1, 2, 3], empty_array: [], hash: { a: true, b: "truthy", falsey: false, nil: nil }, empty_hash: {}, tokens: ["a", { b: true, c: false }], empty_tokens: [{ a: false }], string_with_quotes: 'double"quote"party"' })
|
||||
end
|
||||
|
||||
def test_link_to_data_nil_equal
|
||||
|
|
Loading…
Reference in New Issue