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.

È stato utile?

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à il image_tags e
  • ActionMailer::Base.default_url_options[:host] si prenderà cura i tag link_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

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" />
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top