¿Cómo tener una ruta absoluta para las hojas de estilo en Mailer con la tubería de activos?
-
22-10-2019 - |
Pregunta
Los ayudantes de la vista en mi plantilla de correo me dan URL relativas a la hoja de estilo y las imágenes. Por supuesto, esto no funcionará si estoy viendo el correo electrónico en Gmail, por ejemplo.
En apps/views/layouts/mailer.html.erb
<%= stylesheet_link_tag "application" %>
...
<%= link_to(image_tag("logo.png"), "http://mysite.com") %>
Renders como:
<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>
¿Cómo consigo rieles para darme enlaces absolutos? Estoy en Rails 3.1, la tubería de activos está vigente.
Solución
`config.action_controller.asset_host Maneja el prefijo del host en las vistas generadas a partir de un ActionController.
Para cualquier cosa generada en un correo electrónico, está buscando el Mailer de Action Opciones de configuración, más específicamente:
ActionMailer::Base.asset_host
manejará suimage_tags
yActionMailer::Base.default_url_options[:host]
Cuidará de sulink_to
Etiquetas.
p.ej:
ActionMailer::Base.asset_host = "http://blah.com"
ActionMailer::Base.default_url_options[:host] = "blah.com"
Tenga en cuenta que no necesita especificar el prefijo HTTP para el host de URL predeterminado, lo hará para el host de activos.
Los he especificado dentro de mi ambiente.rb Después del inicializador de la aplicación. Recomendaría establecer una variable de configuración de la aplicación para el dominio de cada entorno.
Otros consejos
Para Rails 3.2 y ActionMailer Use:
config.action_mailer.asset_host = "http://www.example.com"
Esto podría ser un poco truco, pero si especifica un host de activo, todo Los ayudantes lo tendrán en cuenta Al renderizar enlaces. Entonces, si te configuras
config.action_controller.asset_host = "http://mysite.com"
en tu configuración, stylesheet_link_tag
incluirá el nombre del host.
En este hilo de cohetscientist y Joe preguntó sobre otras ideas:
http://apidock.com/rails/actionview/helpers/assettaghelper/stylesheet_link_tag
Puede generar CSS completo de la siguiente manera (si no le importa el alojamiento de activos). Sin embargo, la respuesta de David Radcliffe debería funcionar.
stylesheet_link_tag "http://www.railsapplication.com/style.css" # => <link href="http://www.railsapplication.com/style.css" media="screen" rel="stylesheet" type="text/css" />