mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
8b19d66fc6
Summary === Prior to this commit, calls passing `aria: { labelledby: [...] }` serialized the `aria-labelledby` Array value as JSON. This commit introduces special case logic to serialize `aria-` prefixed `TrueClass`, `FalseClass`, `Hash`, and `Array` values more appropriately. An element's [`aria-labelledby` attribute][aria-labelledby] and [`aria-describedby` attribute][aria-describedby] can accept a space-delimited list of identifier values (much like the [`class` attribute][class] accepts a space delimited [`DOMTokenList` value][DOMTokenList]). Similarly, there are [no boolean `aria-` attributes][aria-attributes] (only `true`, `false`, or undefined), so this commit serializes `true` to `"true"` and `false` to `"false"`. Testing --- This change moves an assertion _outside_ of a loop over `["aria", :aria]`. Prior to this change, the second assertion within the loop wasn't utilizing the iterated value as a Hash key. That is to say: `aria:` (where an `aria` local variable is declared) is not equivalent an equivalent syntax to `aria =>`. Since the migration to `**options` in response to Ruby 2.7 deprecations, invoking `tag.a("aria" => {...})` incorrectly coerces the `"aria" => {...}` has to be the `TagBuilder#a` method `content = nil` ordered argument, instead of its `options` keyword arguments. This commit does not modify that behavior, but it _does_ move the assertion outside the block so that it isn't run unnecessarily. [aria-labelledby]: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-labelledby_attribute [aria-describedby]: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-describedby_attribute [aria-attributes]: https://www.w3.org/TR/wai-aria-1.1/#propcharacteristic_value [class]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/class [DOMTokenList]: https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList [class_names]: https://edgeapi.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-class_names |
||
---|---|---|
.. | ||
app/assets/javascripts | ||
bin | ||
lib | ||
test | ||
.gitignore | ||
actionview.gemspec | ||
blade.yml | ||
CHANGELOG.md | ||
coffeelint.json | ||
MIT-LICENSE | ||
package.json | ||
Rakefile | ||
README.rdoc | ||
RUNNING_UJS_TESTS.rdoc | ||
RUNNING_UNIT_TESTS.rdoc |
= Action View Action View is a framework for handling view template lookup and rendering, and provides view helpers that assist when building HTML forms, Atom feeds and more. Template formats that Action View handles are ERB (embedded Ruby, typically used to inline short Ruby snippets inside HTML), and XML Builder. You can read more about Action View in the {Action View Overview}[https://edgeguides.rubyonrails.org/action_view_overview.html] guide. == Download and installation The latest version of Action View can be installed with RubyGems: $ gem install actionview Source code can be downloaded as part of the Rails project on GitHub: * https://github.com/rails/rails/tree/master/actionview == License Action View is released under the MIT license: * https://opensource.org/licenses/MIT == Support API documentation is at * https://api.rubyonrails.org Bug reports for the Ruby on Rails project can be filed here: * https://github.com/rails/rails/issues Feature requests should be discussed on the rails-core mailing list here: * https://discuss.rubyonrails.org/c/rubyonrails-core