2011-10-21 78 views
9

我有我的郵件在導軌3.1上有一個內聯附件。asset_url在導軌上的郵件3.1

要打開附件我用這個代碼:

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

是有沒有辦法改變的東西,如assets_url

+0

您不需要(也不希望)爲asset_url使用類似的內容...它只會爲您節省第一個字。此外,更短的版本:''File.read(Rails.root.join('app/assets/images','Rails.png'))''您可以從中創建自己的「asset_url」類助手。 –

+0

但我可以將我的資產放在供應商資產文件中,如外部js文件或我想要添加到電子郵件正文中的外部圖像 –

+0

您可以像'File.read(Rails.root。 join('public',view_context.asset_path('Rails.png')))'?它應該工作,因爲編譯資產始終處於公共/資產狀態。那'view_context'可能不是必需的(或者它可能在ActionMailer :()中不可用,但是讓我們試試吧! –

回答

10

如果我理解正確,您希望使用資產管道的搜索功能來查找給定資產的本地路徑,因此您不必硬編碼它所在的目錄。如果是這種情況,您希望做到這一點:

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

這將使用標準的流水線/鏈輪搜索找到資產,並給你的文件的完全限定本地路徑。

+0

您先生...只是節省我的一天...謝謝 –

+0

嗨,這給了我路徑'app/assets/...「,但並沒有給出'公共/資產'中的實際資產路徑,儘管知道這一點很酷,但即使在生產環境中,它也不會給我我想要的目錄。儘管我已經添加到我的筆記,謝謝 – FireDragon