在Rails中,如何将资产管道中的样式表包含为<style>标记?</style>

时间:2013-08-20 22:46:31

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 asset-pipeline ruby-on-rails-4

每个人都知道如何使用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/stylesheetsfoo.css.sass生活在哪里)。

所以,这感觉更接近,但仍然不是那么。

2 个答案:

答案 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

然后在您想要的任何条件下将其添加到您的页面,我认为这是查看它的最简单方法。