我有一个基于Rails 3.1的邮件系统,其中包含一个内联附件。
要打开该附件,我使用以下代码:
attachments["rails.png"] = File.read("#{Rails.root}/app/assets/images/Rails.png")
有没有办法像
assets_url
这样更改它?我有一个基于Rails 3.1的邮件系统,其中包含一个内联附件。
要打开该附件,我使用以下代码:
attachments["rails.png"] = File.read("#{Rails.root}/app/assets/images/Rails.png")
assets_url
这样更改它?如果我理解正确,您想使用资产管道的搜索功能来定位给定资产的本地路径,以便不必硬编码它所在的目录。 如果是这种情况,您应该这样做:
<YourAppName>::Application.assets.find_asset('Rails.png').pathname
这将使用标准的pipeline / sprockets搜索来定位资产,并为您提供文件的完全限定本地路径。
File.read(Rails.root.join('app/assets/images', 'Rails.png'))
,你可以从中制作自己的类似 "asset_url" 的帮助程序。 - Dalibor FilusFile.read(Rails.root.join('public', view_context.asset_path('Rails.png')))
?它应该可以工作,因为编译后的资源总是在 public/assets 中。那个view_context
可能不是必需的(或者在 ActionMailer 中可能不可用 :( ),但让我们试一试! - Dalibor Filus