2015-04-07 93 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