每个人都知道如何使用stylesheet_link_tag
链接到样式表,但我想在页面本身中实际包含整个样式表。 (不,这通常不是一个很好的做法,但在这种情况下它是有道理的。)
stylesheet_include_tag
不存在,并且在Rails中比一个更大的坏人的同事说的不是一个简单的方法。
问题:
实际上是否可以使用资产管道和仍然将CSS或JavaScript文件(从Sass或CoffeeScript编译!)的内容嵌入到.haml
视图中?怎么样?
添加了:
我希望我的布局能够包含以下内容:
= stylesheet_link_tag "base"
= stylesheet_embed_tag "page-specific-styles/foo"
并按照以下几行生成输出HTML:
<link rel="stylesheet" href="/base.css" />
<style type="text/css">.foo { color: red; }</style>
更新
如果你set your initalizer correctly,可以在Haml中使用Sass,但我似乎不能@import "foo"
来自此上下文,其中foo.css.sass
是资产管道中的样式表。请注意@import "compass"
(假设您有指南针宝石)确实有效。
这看起来像(haml):
%style
:sass
@import "foo"
Rails提供了一个错误,即“foo”无法找到,即使它声称正在查看app/assets/stylesheets
(foo.css.sass
生活在哪里)。
所以,这感觉更接近,但仍然不是那么。
答案 0 :(得分:3)
来自http://blog.phusion.nl/2011/08/14/rendering-rails-3-1-assets-to-string/:
YourApp::Application.assets.find_asset('api.css').source
in haml
%style
=raw YourApp::Application.assets.find_asset('foo.css').source
注意事项:
我认为这需要在生产中进行资产编制,这可能非常昂贵。
答案 1 :(得分:0)
如果我正确理解您的问题,您可以将CSS代码添加到普通的Ruby视图文件(作为部分),比如styles.html.erb
。
然后在您想要的任何条件下将其添加到您的页面,我认为这是查看它的最简单方法。