rails 3.1邮件程序中的asset_url
Posted
技术标签:
【中文标题】rails 3.1邮件程序中的asset_url【英文标题】:asset_url in mailer on rails 3.1 【发布时间】:2011-12-12 20:17:27 【问题描述】:我在 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”的助手。
但我可以将我的资产放入供应商资产文件中,例如外部 js 文件,或者我想添加到电子邮件正文中的外部图像
你能做类似File.read(Rails.root.join('public', view_context.asset_path('Rails.png')))
的事情吗?它应该作为编译资产始终在公共/资产中工作。 view_context
可能不是必需的(或者它可能在 ActionMailer 中不可用:()但让我们试一试!
【参考方案1】:
如果我理解正确,您想使用资产管道的搜索功能来定位给定资产的本地路径,这样您就不必硬编码它所在的目录。如果是这种情况,您想这样做这个:
<YourAppName>::Application.assets.find_asset('Rails.png').pathname
这将使用标准管道/链轮搜索来定位资产,并为您提供文件的完全限定本地路径。
【讨论】:
嗨,这给了我“app/assets/...”中的路径,但没有给出“public/assets”中的实际资产路径。虽然知道这一点很酷,但即使在生产环境中它没有给我我想要的目录。很高兴知道虽然我已经添加到我的笔记中。谢谢以上是关于rails 3.1邮件程序中的asset_url的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Rails 应用程序中的一系列电子邮件中过滤掉不活动的电子邮件?