Come avere percorso assoluto per i fogli di stile in mailer con il gasdotto risorsa?
-
22-10-2019 - |
Domanda
Gli helper Visualizza in My modello Mailer mi danno gli URL relativi al foglio di stile e immagini. Naturalmente, questo non funziona se sto visualizzando l'e-mail in Gmail, per esempio.
In apps/views/layouts/mailer.html.erb
<%= stylesheet_link_tag "application" %>
...
<%= link_to(image_tag("logo.png"), "http://mysite.com") %>
Renders come:
<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>
Come faccio a Rails di darmi collegamenti assoluti, invece? Sono on Rails 3.1, la pipeline attività è a tutti gli effetti.
Soluzione
`config.action_controller.asset_host le maniglie il prefisso host viste generate da un ActionController.
Per quanto generato in una e-mail che stai cercando per il ActionMailer le opzioni di configurazione, in particolare:
-
ActionMailer::Base.asset_host
gestirà ilimage_tags
e -
ActionMailer::Base.default_url_options[:host]
si prenderà cura i taglink_to
.
es:
ActionMailer::Base.asset_host = "http://blah.com"
ActionMailer::Base.default_url_options[:host] = "blah.com"
Si noti che non è necessario specificare il http prefisso per l'host predefinito URL, sarà per l'host di asset.
Ho specificato questi all'interno del mio environment.rb dopo l'inizializzazione dell'applicazione. Suggerirei impostare una variabile di configurazione dell'applicazione per ogni dominio ambienti.
Altri suggerimenti
Per rotaie 3.2 e l'uso ActionMailer:
config.action_mailer.asset_host = "http://www.example.com"
Questo potrebbe essere un po 'di un hack, ma se si specifica un host di asset, tutto aiutanti potranno tenerne conto durante il rendering link. Quindi, se si imposta ??p>
config.action_controller.asset_host = "http://mysite.com"
nella vostra configurazione, stylesheet_link_tag
includerà il nome host.
In this thread rocketscientist and Joe asked about other ideas:
http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/stylesheet_link_tag
You can generate full css as follows (if you do not care about asset hosting). However answer by David Radcliffe should work.
stylesheet_link_tag "http://www.railsapplication.com/style.css" # => <link href="http://www.railsapplication.com/style.css" media="screen" rel="stylesheet" type="text/css" />