我的邮件模板中的视图助手为我提供了与样式表和图像相对的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" />
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top