Question

Les aides de vue dans mon modèle Mailer me donnent des URL par rapport à la feuille de style et des images. Bien sûr, cela ne fonctionnera pas si je consulte l'e-mail dans Gmail, par exemple.

Dans apps/views/layouts/mailer.html.erb

<%= stylesheet_link_tag "application" %>
...
<%= link_to(image_tag("logo.png"), "http://mysite.com") %>

Renders comme:

<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>

Comment puis-je obtenir Rails pour me donner des liens absolus à la place? Je suis sur Rails 3.1, le pipeline d'actifs est en vigueur.

Était-ce utile?

La solution

`config.action_controller.asset_host gère le préfixe hôte dans les vues générées à partir d'un ActionController.

Pour tout ce qui produit dans un e-mail que vous cherchez ActionMailer options de configuration, plus précisément:

  • ActionMailer::Base.asset_host va gérer votre image_tags et
  • ActionMailer::Base.default_url_options[:host] regardera après vos balises link_to.

par exemple:

ActionMailer::Base.asset_host                 = "http://blah.com"
ActionMailer::Base.default_url_options[:host] = "blah.com"

Notez que vous n'avez pas besoin de spécifier le préfixe http pour l'hôte URL par défaut, vous voulez pour l'hôte d'actifs.

J'ai indiqué dans ma ces environment.rb après l'initialisation de l'application. Je recommande définition d'une variable de configuration d'application pour chaque domaine d'environnements.

Autres conseils

Pour les rails 3.2 et l'utilisation ActionMailer:

config.action_mailer.asset_host = "http://www.example.com"

Cela peut être un peu un hack, mais si vous spécifiez un hôte d'actifs, tous

Dans ce fil rocketscientist et Joe a demandé à d'autres idées:

http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/stylesheet_link_tag

Vous pouvez générer Html Css comme suit (si vous ne se soucient pas d'hébergement actif). Cependant répondre par David Radcliffe devrait fonctionner.

stylesheet_link_tag "http://www.railsapplication.com/style.css" # =>
  <link href="http://www.railsapplication.com/style.css" media="screen" rel="stylesheet" type="text/css" />
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top