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

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

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

В моем макете 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"):

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

Ответ 1

попробуйте переместить папку email-styles.css в /public/assets/ или добавить ее в конвейер активов. Вики-портал:

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

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

Ответ 2

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