首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Premailer-Rails gem为我的HTML电子邮件指定样式表?

如何使用Premailer-Rails gem为我的HTML电子邮件指定样式表?
EN

Stack Overflow用户
提问于 2016-12-24 07:27:44
回答 2查看 2.1K关注 0票数 13

我有一个样式表,我想在我的超文本标记语言电子邮件中使用,路径是:app/vendor/assets/stylesheets/inspinia/email_templates/email-styles.css

我正在使用Premailer-Rails gem来设置我的电子邮件样式。

在我的mailer.html.erb布局中,我有以下内容:

代码语言:javascript
复制
<%= stylesheet_link_tag "inspinia/email_templates/email-styles.css", media: 'all' %>

然而,在我的Heroku日志中,我收到了以下消息:

代码语言:javascript
复制
app[web.1]: [923202d9-b3f1-4b9a-9f42-7b70dcc01d92] Started GET "/stylesheets/inspinia/email_templates/email-styles.css" for 54.167.56.21 at 2016-12-23 23:25:08 +0000
app[web.1]: [923202d9-b3f1-4b9a-9f42-7b70dcc01d92]   
2016-12-23T23:25:08.286725+00:00 app[web.1]: [923202d9-b3f1-4b9a-9f42-7b70dcc01d92] ActionController::RoutingError (No route matches [GET] "/stylesheets/inspinia/email_templates/email-styles.css"):

那么,如何在生产环境中计算/指定该样式表的正确路径呢?

EN

回答 2

Stack Overflow用户

发布于 2017-01-10 11:49:28

尝试将email-styles.css移动到/public/assets/文件夹,或将其添加到assets管道中。Premailer-rails wiki:

public

  • 文件系统:如果在public/中有一个文件与中的路径相同,那么将从磁盘中读取该文件。例如,如果URL为http://cdn.example.com/assets/email.css,则返回位于公共/assets/email.css的文件的内容(如果存在)。

  1. 资源管道:如果Rails可用且资源管道已启用,则通过资源管道检索文件。例如,如果URL是http://cdn.example.com/assets/email-fingerprint123.css,则从资产流水线请求文件email.css。也就是说,在从资产管道请求指纹和前缀(在本例中是资产的前缀)之前,指纹和前缀将被剥离。
票数 3
EN

Stack Overflow用户

发布于 2017-01-05 16:06:25

将以下内容添加到config/initializers/assets.rb

代码语言:javascript
复制
Rails.application.config.assets.precompile << 'email-styles.css'
Rails.application.config.assets.paths << Rails.root.join('app/vendor/assets/stylesheets/inspinia/email_templates')

然后在模板中使用<%= stylesheet_link_tag 'email-styles.css', media: 'all' %>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41308904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档