2015-04-07 40 views
3

我在Heroku上託管了一個Rails 4應用程序,該應用程序爲S3存儲桶提供資源。我正在嘗試定製我的郵件程序(在這種情況下,設計Devise郵件程序),以便我可以將內嵌圖像嵌入到我的電子郵件中。Rails 4 Mailer,Amazon S3和內嵌圖像

每Rails的文檔,郵件程序應包含的代碼如下所示:

def confirmation_instructions(record, token, opts={}) 
    # Prepare image for embedding 
    attachments.inline['logo'] = File.read("#{Rails.root}/app/assets/images/logo.jpg") 

    # Allow Devise to do its thing 
    super 
end 

和視圖應包含以下內容:

<%= image_tag attachments['logo'].url, :style => "my styling here" %> 

在Heroku上,這個失敗,以下日誌:

ActionView :: Template :: Error(未定義的方法'url'爲零:NilClass):

「我在這裏的造型」%>

換句話說,它看起來像attachments.inline [「標誌」]是返回nil,然後在視圖呼籲的.url上爲零。

我已經嘗試了很多修復程序,在這一點上我非常惱火。我知道這一定是我忽略的一些簡單的東西,我希望有人能指出我出錯的地方。

在此先感謝。

+0

我不認爲需要Rails根目錄,請嘗試'File.read('app/assets/images/logo.png');超級「,並確保你的類繼承自Devise :: Mailer – argentum47

回答

2

試試這個:

File.read(Rails.root.join("app/assets/images/logo.jpg") 

這就是我得到它的工作。

+0

它也可以在沒有'Rails.root.join()'的情況下工作。 – nickb