我刚刚对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等等。
答案 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' %>