Hey Philip, Thanks a lot! Based on your comment, I reread the AssetTagHelper and found a nice(r) solution:
I put the following in development.rb: ENV['HOST'] = 'http://localhost:3000' # images in emails have to have absolute urls ActionController::Base.asset_host = Proc.new do |source| if source.starts_with?('/images/email/') ENV['HOST'] else "" end end And then it works: >> ActionView::Base.new.image_tag('/images/email/header.gif') => "<img alt=\"Header\" src=\"http://localhost:3000/images/email/ header.gif?1234982332\" />" >> ActionView::Base.new.image_tag('/images/project/header.gif') => "<img alt=\"Header\" src=\"/images/project/header.gif\" />" Although I am not sure this is more robust thatn my prev. solution since the host has to be set explicitly. Anyway, thank you, Balint On Feb 19, 6:10 pm, Philip Hallstrom <[email protected]> wrote: > > I am sending out html emails. It seems to me that in order for the > > images to be properly shown in the email, their src needs to be > > absolute. > > > More precisely, /images/email/header.gif will not work, but > >http://localhost:3000/images/email/header.gifwill. (If someone can > > refute me here, I am eager to hear it). > > I can't. That's been my experience. Also, the images have to come > from the same domain as the email is from... > > > > > So I was looking to use the > > image_tag helper to get the absolute url for the image source but I > > could not figure out a solution. So what I am currently doing is this: > > > class UserMailer < ActionMailer::Base > > def setup_email(user) > > (...) > > url_with_host = url_for(:controller => "home", :action => > > "index", :only_path => false) > > host_pattern = /^(.*:\/\/.+?)\/.*$/ > > �...@body[:http_host] = url_with_host[host_pattern, 1] > > content_type "text/html" > > > end > > end > > > (setup_email is then called from the actual mailer methods) > > > But this is a hack and it supposes that there is a "home" controller. > > Having the image_tag helper accept the :only_path parameter would be a > > nice solution. I am curious to find out how others deal with this > > problem since it does not seem to be so particular. > > Consider setting the asset host to the URL. That should turn those > image_tags()'s into full URLs. Not sure if there is a way to do that > only for email and not the entire site though. > > -philip --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

