如何从ActionMailer获取文件路径?

时间:2011-05-31 22:32:38

标签: ruby-on-rails-3

我正在开发一个Rails 3应用程序,目前我想将一个图像作为附件添加到电子邮件中。

我现在正在做以下事情:

class CouponMailer < ActionMailer::Base
  default :from => "name@domain.com", :content_type => "multipart/mixed"

  def send_coupon(recipient, coupon)
    @coupon = coupon
    @recipient = recipient

    attachments.inline["#{coupon.picture.title}"] = File.read(File.join(root_url, coupon.picture.url))

    mail(:to => recipient.email, :subject => "a subject")
  end
end

我想要的图片是从我的RefineryCMS应用程序上传的,当我复制我在File.join(root_url, coupon.picture.url)处获得的网址并将其粘贴到浏览器中时,我可以看到图片,但是当我运行应用程序时,我收到以下错误:

No such file or directory - http://localhost:3000/system/images/BAhbBlsHOgZmIiwyMDExLzA1LzI0LzE3XzQ4XzUxXzcxNF9tYWluX2ltYWdlMi5qcGc/main_image2.jpg

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

看起来RefineryCMS正在使用Dragonfly进行文件上传。我相信你想在你的图片上调用.path来检索文件系统路径。可能是这样的:

attachments.inline["#{coupon.picture.title}"] = File.read(coupon.picture.file)

有关详细信息,请查看documentation。您应该在General Usage页面上找到所需内容。