Rails 3.1 邮件发送中的 asset_url

9

我有一个基于Rails 3.1的邮件系统,其中包含一个内联附件。

要打开该附件,我使用以下代码:

attachments["rails.png"] = File.read("#{Rails.root}/app/assets/images/Rails.png")

有没有办法像 assets_url 这样更改它?

你不需要(也不想)为此使用 asset_url 这样的东西... 它只会为你节省前几个字。 另外,还有一个更短的版本:File.read(Rails.root.join('app/assets/images', 'Rails.png')),你可以从中制作自己的类似 "asset_url" 的帮助程序。 - Dalibor Filus
但我可以将我的资源放在供应商资产文件中,如外部js文件或我想要添加到电子邮件正文中的外部图像。 - Nicos Karalis
你能否像这样做 File.read(Rails.root.join('public', view_context.asset_path('Rails.png')))?它应该可以工作,因为编译后的资源总是在 public/assets 中。那个 view_context 可能不是必需的(或者在 ActionMailer 中可能不可用 :( ),但让我们试一试! - Dalibor Filus
1个回答

10

如果我理解正确,您想使用资产管道的搜索功能来定位给定资产的本地路径,以便不必硬编码它所在的目录。 如果是这种情况,您应该这样做:

<YourAppName>::Application.assets.find_asset('Rails.png').pathname

这将使用标准的pipeline / sprockets搜索来定位资产,并为您提供文件的完全限定本地路径。


嗨,这让我得到了'app/assets/...'中的路径,但它并没有给出'public/assets'中实际的资源路径。虽然知道这点很酷,但即使在生产环境中,它也没有给出我想要的目录。不过还是很好知道,我已经添加到我的笔记中了。谢谢。 - FireDragon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接