2014-12-20 23 views
1

我正在使用Ruby on Rails 4.1.1,並且想要在電子郵件中添加一個鏈接圖像 - 我的應用徽標 - 但自從我的previous question以來,我有一個疑問。我是否正確地處理「公共」目錄?

通過使用位於public目錄似乎鏈接到你的資產管道的圖像文件,你可以使用

link_to(LINK_TEXT_OR_IMAGE_TAG_HELPER, image_path(IMAGE_NAME)) 

對於那些地處app/assets似乎不至少在生產模式下呈現的電子郵件消息中使用相同的生產中編譯的所有資產都有指紋ID ...是否導致靜態資產加載的指紋不會在電子郵件中呈現圖像?

我懷疑,因爲我想從瀏覽器和電子郵件訪問圖像。我試圖通過將圖像從app/assets/images/logo.png移動到public/images/logo.png並將我的application.css.scss文件中的語句從image-url("logo.png")更改爲url("/images/logos.png")來解決該問題。但我不知道我是否遵循「Rails方式」或「最佳實踐」。我呢?我應該在public目錄中添加我計劃在我的應用程序之外使用的所有資產以及我打算在內部使用我的應用程序的所有資產嗎?

+0

指紋是基於資產的內容。如果您不更改徽標,它應該在部署時保持不變(即可安全地從電子郵件中引用) –

+0

@Sergio Tulentsev - 我試圖從電子郵件中引用位於「app/assets」目錄中的徽標圖像,以及它無法訪問。如果我將圖像放在'public'目錄中(使問題變得正確),那麼圖像就可以訪問。 – user502052

+0

你有'rake assets:precompile'嗎?你是在生產還是在開發模式下運行?生成的鏈接如何查看? – nathanvda

回答

0

對於電子郵件,與標準的Rails視圖相比,它幾乎沒有任何區別。

你可以在你的郵件使用image_tag幫助你在常規視圖正常使用以及鏈接到圖片:

<%= image_tag('some_image.jpg') %> 

您還需要告訴梅勒行動在那裏可以找到資產,因爲它將使用絕對URL來引用您的圖片:

config.action_mailer.asset_host = 'http://www.example.com/' 
+0

我試過了,但它對我沒有用。如果我將圖像放在'public'目錄並使代碼在問題中發生變化,它就可以工作。 – user502052

+1

當圖像不在公共目錄中並且您正在使用image_path時,您可以粘貼圖像路徑嗎? – Shweta

+0

@Shweta - 查看我對問題的最後評論。 – user502052