2011-10-18 15 views
9

私のメーラーテンプレートのビューヘルパーは、スタイルシートとイメージに相対URLを与えます。もちろん、Gmailでメールを表示している場合は、これは機能しません。私はRailsのではなく、私に絶対リンクを与えるために取得するにはどうすればよいメーラーのアセットパイプラインでスタイルシートの絶対パスを取得するにはどうすればよいですか?

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

apps/views/layouts/mailer.html.erb

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

はとしてレンダリング?私はRails 3.1上で、アセットパイプラインが有効です。

答えて

13

`config.action_controller.asset_hostは、ActionControllerから生成されたビュー内のホストプレフィックスを処理します。

メールで生成されたもののためにあなたは、より具体的にactionmailerの設定オプション、探している:

  • ActionMailer::Base.asset_hostが処理するあなたのimage_tags
  • ActionMailer::Base.default_url_options[:host]あなたlink_toタグの後になります。

例:

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

あなたはデフォルトのURLのホスト用のHTTP接頭辞を指定する必要はありません、あなたは資産のホストのためになります。

私はこれらをアプリケーション初期化子の後にenvironment.rbと指定しました。各環境ドメインにアプリケーション構成変数を設定することをお勧めします。このスレッドrocketscientistで

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

これは正しいです、あなたはメールアドレスのアセットホストに" http:// "を持っていますか? –

3

これは少しハックかもしれませんが、アセットホストを指定すると、リンクをレンダリングするときにはすべてhelpers will take it into accountとなります。あなたの設定に

config.action_controller.asset_host = "http://mysite.com" 

を設定するのであれば、stylesheet_link_tagは、ホスト名が含まれます。

+0

お返事ありがとうございます。残念ながら、これはメーラー用にレンダリングされたテンプレートでは機能しません。他のアイデア? – rocketscientist

+0

は私にとってもうまくいきません。 :(これはレールのバグでしょうか? –

+0

あなたはタイプミスがあります、 'config.action_mailer.asset_host' – Dex

11

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

次のように、フルCSSを生成することができます(そうでない場合アセットホスティングについて気をつけてください)。しかし、David Radcliffeの回答はうまくいくはずです。

 
stylesheet_link_tag "http://www.railsapplication.com/style.css" # => 
    <link href="http://www.railsapplication.com/style.css" media="screen" rel="stylesheet" type="text/css" /> 
+0

ありがとう正しい答えのために。 – barelyknown

0

とジョーは、他のアイデアについて尋ね:レール3.2とactionmailerの使用のための

関連する問題