Как получить абсолютный путь для таблиц стилей в почтовой программе с конвейером ресурсов? - PullRequest
9 голосов
/ 18 октября 2011

Помощники вида в моем шаблоне 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>

Как мне заставить Rails вместо меня давать абсолютные ссылки?Я на Rails 3.1, конвейер ресурсов действует.

Ответы [ 4 ]

13 голосов
/ 17 ноября 2011

`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 после инициализатора приложения. Я бы рекомендовал установить переменную конфигурации приложения для каждого домена сред.

11 голосов
/ 17 апреля 2012

Для рельсов 3.2 и ActionMailer используйте:

config.action_mailer.asset_host = "http://www.example.com"
3 голосов
/ 18 октября 2011

Это может быть немного взломано, но если вы укажете хост ресурса, все помощники примут это во внимание при рендеринге ссылок.Так что если вы установите

config.action_controller.asset_host = "http://mysite.com"

в вашей конфигурации, stylesheet_link_tag будет включать имя хоста.

0 голосов
/ 08 мая 2013

В этой теме 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" />
...