diff options
Diffstat (limited to 'actionpack/lib/action_view/helpers/tag_helper.rb')
-rw-r--r-- | actionpack/lib/action_view/helpers/tag_helper.rb | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/actionpack/lib/action_view/helpers/tag_helper.rb b/actionpack/lib/action_view/helpers/tag_helper.rb index 40fd72d23f..8b2d2c3a5a 100644 --- a/actionpack/lib/action_view/helpers/tag_helper.rb +++ b/actionpack/lib/action_view/helpers/tag_helper.rb @@ -10,27 +10,26 @@ module ActionView # Examples: # * <tt>tag("br") => <br /></tt> # * <tt>tag("input", { "type" => "text"}) => <input type="text" /></tt> - def tag(name, options = {}, open = false) - "<#{name}#{tag_options(options)}" + (open ? ">" : " />") + def tag(name, options = nil, open = false) + "<#{name}#{tag_options(options.stringify_keys) if options}" + (open ? ">" : " />") end # Examples: # * <tt>content_tag("p", "Hello world!") => <p>Hello world!</p></tt> # * <tt>content_tag("div", content_tag("p", "Hello world!"), "class" => "strong") => </tt> # <tt><div class="strong"><p>Hello world!</p></div></tt> - def content_tag(name, content, options = {}) - "<#{name}#{tag_options(options)}>#{content}</#{name}>" + def content_tag(name, content, options = nil) + "<#{name}#{tag_options(options.stringify_keys) if options}>#{content}</#{name}>" end private def tag_options(options) - cleaned_options = options.reject { |key, value| value.nil? } - unless cleaned_options.empty? - " " + cleaned_options.symbolize_keys.map { |key, value| - %(#{key}="#{html_escape(value.to_s)}") - }.sort.join(" ") + if options + options.inject("") do |html_str, (key, value)| + value.nil? ? html_str : html_str << %( #{key}="#{html_escape(value)}") + end end end end end -end
\ No newline at end of file +end |