Как иметь абсолютный путь для таблиц стилей в Mailer с конвейером активов?
-
22-10-2019 - |
Вопрос
Помощники в моем шаблоне Mailer дают мне относительные URL -адреса на таблицу стилей и изображения. Конечно, это не сработает, если я просматриваю электронное письмо в Gmail, например.
В apps/views/layouts/mailer.html.erb
<%= stylesheet_link_tag "application" %>
...
<%= link_to(image_tag("logo.png"), "http://mysite.com") %>
Производит как:
<link href="/assets/application-c90478153616a4165babd8cc6f4a28de.css" media="screen" rel="stylesheet" type="text/css" />
...
<a href="http://mysite.com"><img alt="Logo" src="/assets/logo-d3adbf8d0a7f7b6473e2130838635fed.png" /></a>
Как получить рельсы, чтобы дать мне абсолютные ссылки? Я на рельсах 3.1, вступает в силу конвейер активов.
Решение
`config.action_controller.asset_host Обрабатывает префикс хоста в представлениях, сгенерированных из ActionController.
Для всего, что вы ищете в электронном письме Actionmailer Параметры конфигурации, более конкретно:
ActionMailer::Base.asset_host
будет справляться с вашимimage_tags
а такжеActionMailer::Base.default_url_options[:host]
будет заботиться о вашемlink_to
теги.
например:
ActionMailer::Base.asset_host = "http://blah.com"
ActionMailer::Base.default_url_options[:host] = "blah.com"
Обратите внимание, что вам не нужно указывать префикс HTTP для хоста URL -адреса по умолчанию, вы будете для хоста актива.
Я указал их внутри моего Environment.rb После инициализатора приложения. Я бы порекомендовал установить переменную конфигурации приложения для каждой области среды.
Другие советы
Для Rails 3.2 и использования ActionMailer:
config.action_mailer.asset_host = "http://www.example.com"
Это может быть немного взломом, но если вы указали хост актива, все Помощники примут это во внимание Когда рендеринг ссылок. Так что, если вы установите
config.action_controller.asset_host = "http://mysite.com"
в вашей конфигурации, stylesheet_link_tag
будет включать имя хоста.
В этой теме RocketScientist и Джо спросил о других идеях:
http://apidock.com/rails/actionview/helpers/assettaghelper/stylesheet_link_tag
Вы можете генерировать полный CSS следующим образом (если вы не заботитесь о хостинге активов). Однако ответ Дэвида Рэдклиффа должен работать.
stylesheet_link_tag "http://www.railsapplication.com/style.css" # => <link href="http://www.railsapplication.com/style.css" media="screen" rel="stylesheet" type="text/css" />