如何使用Asset Pipeline在Mailer中使用“样式表”的绝对路径?
-
22-10-2019 - |
题
我的邮件模板中的视图助手为我提供了与样式表和图像相对的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 3.1上,资产管道有效。
解决方案
`config.action_controller.asset_host 处理由ActionController生成的视图中的主机前缀。
对于您正在寻找的电子邮件中生成的任何内容 动作机 更具体地说:配置选项:
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前缀,您将为Asset Host。
我在我的内部指定了这些 环境 应用程序初始化器之后。我建议为每个环境域设置应用程序配置变量。
其他提示
对于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" />
不隶属于 StackOverflow