Wie kann man einen absoluten Pfad für Stylesheets in Mailer mit der Asset -Pipeline haben?
-
22-10-2019 - |
Frage
Die Ansichtshelfer in meiner Mailer -Vorlage geben mir relative URLs für Stylesheet und Bilder. Dies funktioniert natürlich nicht, wenn ich die E -Mail beispielsweise in Google Mail anzeige.
Im apps/views/layouts/mailer.html.erb
<%= stylesheet_link_tag "application" %>
...
<%= link_to(image_tag("logo.png"), "http://mysite.com") %>
Rendert als:
<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>
Wie bekomme ich Rails, um mir stattdessen absolute Links zu geben? Ich bin auf Rails 3.1, die Asset -Pipeline ist in Kraft.
Lösung
`config.action_controller.asset_host Verarbeitet das Hostpräfix in Ansichten, die von einem ActionController generiert wurden.
Für alles, was in einer E -Mail generiert wird, suchen Sie nach dem Actionmailer Konfigurationsoptionen, genauer gesagt:
ActionMailer::Base.asset_host
wird mit deinem umgehenimage_tags
undActionMailer::Base.default_url_options[:host]
Ich werde mich um deine kümmernlink_to
Stichworte.
z.B:
ActionMailer::Base.asset_host = "http://blah.com"
ActionMailer::Base.default_url_options[:host] = "blah.com"
Beachten Sie, dass Sie das HTTP -Präfix für den Standard -URL -Host nicht angeben müssen.
Ich habe diese in meinem spezifiziert Umwelt.RB Nach dem Anwendungsinitialisierer. Ich würde empfehlen, eine Anwendungskonfigurationsvariable für jede Umgebungsdomäne festzulegen.
Andere Tipps
Für Rails 3.2 und Actionmailer -Verwendung:
config.action_mailer.asset_host = "http://www.example.com"
Dies könnte ein bisschen ein Hack sein, aber wenn Sie einen Asset -Host angeben Helfer werden es berücksichtigen Beim Rendern von Links. Also, wenn Sie einstellen
config.action_controller.asset_host = "http://mysite.com"
in Ihrer Konfiguration, stylesheet_link_tag
wird den Hostnamen enthalten.
In diesem Thread fragten RocketScientist und Joe nach anderen Ideen:
http://apidock.com/rails/actionview/helpers/assettaghelper/stylesheet_link_tag
Sie können wie folgt volles CSS erstellen (wenn Sie sich nicht für das Hosting von Asset interessieren). Die Antwort von David Radcliffe sollte jedoch funktionieren.
stylesheet_link_tag "http://www.railsapplication.com/style.css" # => <link href="http://www.railsapplication.com/style.css" media="screen" rel="stylesheet" type="text/css" />