Home > Blog > image_url function in Ruby on Rails

image_url function in Ruby on Rails
1 star2 stars3 stars4 stars5 stars
(no votes yet)
Loading ... Loading ...

December 23rd, 2009 Leave a comment Go to comments

If you need to get the full URL of an image, just put the following code snippet into ApplicationHelper module in your app/helpers/application_helper.rb:

  def image_url(source)
    abs_path = image_path(source)
    unless abs_path =~ /^http/
      abs_path = "#{request.protocol}#{request.host_with_port}#{abs_path}"
    end
   abs_path
  end

I wonder why this function is not already a standard part of Rails.

(Idea by Rob Biedenharn)

Tags: ,
  1. joserwan
    December 29th, 2009 at 20:38 | #1 | Firefox 3.5.6Ubuntu 9.10
  2. December 29th, 2009 at 22:50 | #2 | Google Chrome 4.0.276.0GNU/Linux

    @joserwan
    I know about image_path. It is even used in the code! The problem is that image_path does not always create a full URL.

  3. Jay
    June 16th, 2010 at 11:44 | #3 | Firefox 3.6.3Mac OS X 10.6

    Could you help me please? I cannot use this in email layout, somehow…

    in application_helper.rb I have
     def image_url(source)
       abs_path = image_path(source)
       unless abs_path =~ /^http/
         abs_path = “#{request.protocol}#{request.host_with_port}#{abs_path}”
       end
       abs_path
     end
    and in my email model (order_mailer.rb) I have
    class OrderMailer < ActionMailer::Base
     layout 'emails'
     . . .
    end

    but when I use I get
    undefined method `image_url’ for #

    This doesn’t work either:

    class OrderMailer < ActionMailer::Base
     include ApplicationHelper
     layout 'emails'
     . . .
    end

  1. No trackbacks yet.
or