Asset Pipelineを使用してMailerでStyleSheetsの絶対的なパスを作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/7801102

質問

私のメーラーテンプレートのビューヘルパーは、スタイルシートと画像に相対的なURLを提供します。もちろん、たとえばGmailでメールを表示している場合、これは機能しません。

apps/views/layouts/mailer.html.erb

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

レンダリングとして:

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

代わりにRailsを絶対的なリンクに与えるにはどうすればよいですか?私はRails 3.1にいます、資産パイプラインが有効です。

役に立ちましたか?

解決

`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 アプリケーションの初期化の後。各環境ドメインにアプリケーション構成変数を設定することをお勧めします。

他のヒント

Rails 3.2およびActionMailerの使用の場合:

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

これはちょっとしたハックかもしれませんが、資産ホストを指定すると、すべて ヘルパーはそれを考慮に入れます リンクをレンダリングするとき。だからあなたが設定した場合

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

あなたの構成で、 stylesheet_link_tag ホスト名が含まれます。

このスレッドでは、RocketscientistとJoeが他のアイデアについて尋ねました。

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" />
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top