【发布时间】:2014-09-16 05:46:12
【问题描述】:
我正在尝试将文件附加到电子邮件中。文件在assets/downloads/product.pdf
在邮件中,我有:
attachments["product.pdf"] = File.read(ActionController::Base.helpers.asset_path("product.pdf"))
我试过了:
attachments["product.pdf"] = File.read(ActionController::Base.helpers.asset_url("product.pdf"))
...甚至:
attachments["product.pdf"] = File.read(ActionController::Base.helpers.compute_asset_host("product.pdf") + ActionController::Base.helpers.compute_asset_path("product.pdf"))
我总是遇到同样的错误:
EmailJob crashed!
Errno::ENOENT: No such file or directory - //localhost:3000/assets/product.pdf
...或主题的变体。但即使我尝试在视图中使用asset_url 或者只是将url 放在浏览器中,它也可以工作:
http://localhost:3000/assets/product.pdf
我也试过直接使用:
File.read("app/assets/downloads/product.pdf")
File.read("downloads/product.pdf")
...在开发环境中有效,但在登台服务器(heroku)上无效。错误依旧:
Errno::ENOENT: No such file or directory - downloads/product-market-fit-storyboard.pdf
也试过了:
File.read("/downloads/product.pdf")
File.read("http://lvh.me:3000/assets/product.pdf")
...根本不工作。
想法?
【问题讨论】:
-
在附加文件时尝试在
http协议前添加前缀 -
不行。还尝试使用
File.read("http://lvh.me:3000/assets/product.pdf")
标签: ruby-on-rails ruby-on-rails-4 asset-pipeline actionmailer