diff options
Diffstat (limited to 'actionpack/lib/action_view/helpers/asset_tag_helper.rb')
-rw-r--r-- | actionpack/lib/action_view/helpers/asset_tag_helper.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/actionpack/lib/action_view/helpers/asset_tag_helper.rb b/actionpack/lib/action_view/helpers/asset_tag_helper.rb index 2f3bd71d5a..6328ff6f71 100644 --- a/actionpack/lib/action_view/helpers/asset_tag_helper.rb +++ b/actionpack/lib/action_view/helpers/asset_tag_helper.rb @@ -54,6 +54,31 @@ module ActionView tag("link", "rel" => "Stylesheet", "type" => "text/css", "media" => "screen", "href" => source) }.join("\n") end + + # Returns an image tag converting the +options+ instead html options on the tag, but with these special cases: + # + # * <tt>:alt</tt> - If no alt text is given, the file name part of the +src+ is used (capitalized and without the extension) + # * <tt>:size</tt> - Supplied as "XxY", so "30x45" becomes width="30" and height="45" + # + # The +src+ can be supplied as a... + # * full path, like "/my_images/image.gif" + # * file name, like "rss.gif", that gets expanded to "/images/rss.gif" + # * file name without extension, like "logo", that gets expanded to "/images/logo.png" + def image_tag(src, options = {}) + options.symbolize_keys + + options.update({ :src => src.include?("/") ? src : "/images/#{src}" }) + options[:src] += ".png" unless options[:src].include?(".") + + options[:alt] ||= src.split("/").last.split(".").first.capitalize + + if options[:size] + options[:width], options[:height] = options[:size].split("x") + options.delete :size + end + + tag("img", options) + end end end end |