Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在带有资产管道的mailer中拥有样式表的绝对路径?_Ruby On Rails_Ruby On Rails 3_Asset Pipeline - Fatal编程技术网

Ruby on rails 如何在带有资产管道的mailer中拥有样式表的绝对路径?

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

我的邮件模板中的视图帮助程序为我提供了样式表和图像的相对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 = "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" />