4

我刚刚对 Rails 3.2 和最新的 Sass 和 Coffee Rails Gems 进行了重大升级,但我的应用程序文件不会呈现为 Application.css.scss。我在我的html中有它:

  <%= stylesheet_link_tag 'application.css.scss' %>

当我在开发模式下查看页面源时,我得到了

  <link href="/assets/application.css.scss.css" media="screen" rel="stylesheet" type="text/css" />

到底他妈发生了什么!?

它似乎将 .css 附加到我放在 stylesheet_link_tag 中的所有内容中,所以如果我在页面源中将其保留为“应用程序”,我就有 application.css 等。

4

3 回答 3

4

标记的适当格式是:

<%= stylesheet_link_tag 'application' %>

Rails 自动将.scss文件编译成一个.css文件——然后它会自动导入正确的文件。这一切都由你来照顾。

于 2012-05-08T05:10:58.337 回答
1

我认为在 Rails 3.2 中使用 Sprockets 执行此操作的“默认”方法是使用名为 application.css 的文件(不是 application.css.scss),其中包含您的 Sprockets 清单代码。应该看起来像这样......

application.css(应用程序/资产/样式表)

/*
 * This is a manifest file that'll automatically include all the stylesheets available in this directory
 * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
 * the top of the compiled file, but it's generally better to create a new file per style scope.
 *= require_self
 *= require main_scss_file
*/

至少应该有两行,第一行应该是 require_self,它在自身内部添加内容,以及 require some_other_file,它是对您的主 scss 文件的引用。rake assets:precompile 的默认行为是编译您的 application.js 和 application css

Rail 生成器生成的 production.rb 编码指定默认编译 application.css。(配置/环境)

  # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
  # config.assets.precompile += %w( search.js )
  config.assets.precompile += %w( home.js )

应用程序.erb

<%= stylesheet_link_tag 'application' %>
于 2012-05-08T04:58:04.513 回答
1

如果您不将扩展名附加到stylesheet_link_tag,.css将自动附加。但是,我不知道为什么在您指定时它会附加扩展名.scss

我也不确定你为什么不只使用<%= stylesheet_link_tag 'application' %>,这应该是所有必要的。

有关更多信息,请参阅stylesheet_link_tag 此处的文档。

于 2012-05-07T00:48:36.167 回答