Как мне указать таблицу стилей для моей электронной почты в формате HTML с помощью гема Premailer-Rails?

У меня есть таблица стилей, которую я хочу использовать в моих электронных письмах HTML по пути: app/vendor/assets/stylesheets/inspinia/email_templates/email-styles.css

Я использую драгоценный камень Premailer-Rails для стилевого оформления электронной почты.

В моем mailer.html.erb макет, у меня есть следующее:

<%= stylesheet_link_tag "inspinia/email_templates/email-styles.css", media: 'all' %>

Тем не менее, в моих журналах на Heroku я получаю следующее сообщение:

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"):

Итак, как мне определить / указать правильный путь для этой таблицы стилей в производстве?

2 ответа

Попробуйте двигаться email-styles.css в /public/assets/ или добавьте его в конвейер ресурсов. Premailer-рельсы вики:

  1. Файловая система: если внутри public/ есть файл с тем же путем, что и в URL, он читается с диска. Например, если URL-адрес http://cdn.example.com/assets/email.css содержимое файла, расположенного в public/assets/email.css, возвращается, если он существует.

  2. Конвейер активов: если Rails доступен, и актив активирован, файл извлекается через конвейер актива. Например, если URL-адрес http://cdn.example.com/assets/email-fingerprint123.css, файл email.css запрашивается из конвейера ресурсов. То есть отпечаток пальца и префикс (в данном случае это префикс ресурса) перед его запросом из конвейера активов.

Добавьте следующее в config/initializers/assets.rb:

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' %> в шаблоне.

Другие вопросы по тегам