Как иметь абсолютный путь для таблиц стилей в Mailer с конвейером активов?

StackOverflow https://stackoverflow.com/questions/7801102

Вопрос

Помощники в моем шаблоне 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" />
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top