Ruby on rails 如何在带有资产管道的mailer中拥有样式表的绝对路径?
我的邮件模板中的视图帮助程序为我提供了样式表和图像的相对URL。当然,举例来说,如果我在Gmail中查看电子邮件,这将不起作用 在Ruby on rails 如何在带有资产管道的mailer中拥有样式表的绝对路径?,ruby-on-rails,ruby-on-rails-3,asset-pipeline,Ruby On Rails,Ruby On Rails 3,Asset Pipeline,我的邮件模板中的视图帮助程序为我提供了样式表和图像的相对URL。当然,举例来说,如果我在Gmail中查看电子邮件,这将不起作用 在apps/views/layouts/mailer.html.erb <%= stylesheet_link_tag "application" %> ... <%= link_to(image_tag("logo.png"), "http://mysite.com") %> ... 呈现为: <link href="/assets
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 = "http://mysite.com"
在您的配置中,
样式表链接标签将包括主机名。`config.action\u controller.asset\u host在ActionController生成的视图中处理主机前缀
对于在电子邮件中生成的任何内容,您需要查找ActionMailer配置选项,更具体地说:
ActionMailer::Base.asset\u host
将处理您的image\u标记
和
ActionMailer::Base。默认的url\u选项[:host]
将管理到标记的链接
例如:
请注意,您不需要为默认url主机指定http前缀,而需要为资产主机指定http前缀
我已经在我的环境.rb中的应用程序初始值设定项之后指定了这些。我建议为每个环境域设置一个应用程序配置变量。对于rails 3.2和ActionMailer的使用:
config.action_mailer.asset_host = "http://www.example.com"
在这篇文章中,火箭科学家和乔询问了其他想法:
您可以按如下方式生成完整的css(如果您不关心资产托管)。然而,大卫·拉德克利夫的回答应该是可行的
stylesheet_link_tag "http://www.railsapplication.com/style.css" # =>
<link href="http://www.railsapplication.com/style.css" media="screen" rel="stylesheet" type="text/css" />
样式表\链接\标记“http://www.railsapplication.com/style.css" # =>
谢谢你的回复。不幸的是,这不适用于为邮件程序呈现的模板。还有其他想法吗?如果你有输入错误,应该是config.action\u mailer.asset\u host
stylesheet_link_tag "http://www.railsapplication.com/style.css" # =>
<link href="http://www.railsapplication.com/style.css" media="screen" rel="stylesheet" type="text/css" />