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.

War es hilfreich?

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 umgehen image_tags und
  • ActionMailer::Base.default_url_options[:host] Ich werde mich um deine kümmern link_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" />
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top