Rails 3.2和Sass不呈现Application.css

时间:2012-05-07 00:37:43

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我刚刚对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'留在我的页面源代码中,我有application.css等等。

3 个答案:

答案 0 :(得分:4)

标签的适当格式为:

<%= stylesheet_link_tag 'application' %>

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

答案 1 :(得分:1)

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

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

有关详细信息,请参阅stylesheet_link_tag here的文档。

答案 2 :(得分:1)

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

application.css(app / assets / stylesheets)

/*
 * 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,它在内部添加内容,并且需要some_other_file,它是对你的主scss文件的引用.rake assets的默认行为:precompile是编译你的application.js和应用程序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 )

application.erb

<%= stylesheet_link_tag 'application' %>