Rails 动态渲染模板不解析样式表
Rails rendering template dynamically does not resolve stylesheets
我正在使用外部 API 在 Rails 中发送电子邮件,因此需要编写我自己的代码以将模板呈现为字符串。
def html_for_template(template_name)
template_root = "app/views/emails"
template_path = "#{template_root}/#{template_name}"
haml = File.open(template_path).read
html = Haml::Engine.new(haml).render
content = ERB.new(html).result
end
模板内容:
%html
%head
%meta{content: "text/html; charset=utf-8", "http-equiv" => "Content-Type"}
%link{"data-turbolinks-track" => "true", href: "styles.css", media: "all", rel: "stylesheet"}
问题是,结果字符串实际上并没有解析styles.css的内容,只是复制了文字字符串<link>...</link>
,这是没有用的,因为我需要实际的CSS ] 结果字符串中的内容。
我也试过:
:css
= MyApp::Application.assets["styles.css"].to_s.html_safe
但这会产生相同的结果:MyApp::Application.assets["styles.css"].to_s.html_safe
被逐字复制,并没有真正解决。 ApplicationController.render(template_path)
也产生完全相同的结果。
如何在解析样式表内容时将模板呈现为字符串?
在像 :css
这样的 HAML 过滤器中,这些东西被视为字符串,您必须使用 #{something}
到 运行 ruby 代码。
:css
#{MyApp::Application.assets["styles.css"].to_s.html_safe}
我正在使用外部 API 在 Rails 中发送电子邮件,因此需要编写我自己的代码以将模板呈现为字符串。
def html_for_template(template_name)
template_root = "app/views/emails"
template_path = "#{template_root}/#{template_name}"
haml = File.open(template_path).read
html = Haml::Engine.new(haml).render
content = ERB.new(html).result
end
模板内容:
%html
%head
%meta{content: "text/html; charset=utf-8", "http-equiv" => "Content-Type"}
%link{"data-turbolinks-track" => "true", href: "styles.css", media: "all", rel: "stylesheet"}
问题是,结果字符串实际上并没有解析styles.css的内容,只是复制了文字字符串<link>...</link>
,这是没有用的,因为我需要实际的CSS ] 结果字符串中的内容。
我也试过:
:css
= MyApp::Application.assets["styles.css"].to_s.html_safe
但这会产生相同的结果:MyApp::Application.assets["styles.css"].to_s.html_safe
被逐字复制,并没有真正解决。 ApplicationController.render(template_path)
也产生完全相同的结果。
如何在解析样式表内容时将模板呈现为字符串?
在像 :css
这样的 HAML 过滤器中,这些东西被视为字符串,您必须使用 #{something}
到 运行 ruby 代码。
:css
#{MyApp::Application.assets["styles.css"].to_s.html_safe}