自从我在Rails中开发以来,我已经有一段时间了,而且我无法让任何scss
样式表在我刚创建的rails应用程序上运行。
layouts/application.html.erb
在顶部有默认的<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
。
出于测试目的,我在main.scss
中创建了一个assets/stylesheets/
文件,如下所示:
* {
border: 1px solid black;
}
我认为application.scss
文件应该抓取其文件夹和子文件夹中的所有样式表,但事实并非如此。 (奇怪的是,.js
文件加载得很好。)
我已经尝试RAILS_ENV=production rake assets:precompile
但它没有做任何事情。有人可以解释它甚至做了什么吗?
我已尝试将*= require main
和*= require main.scss
添加到application.scss
。我甚至将文件ext更改为两个文件的css。我获得任何CSS呈现的唯一方法是直接将代码添加到application.scss
,这是我不想做的。
请帮助我。
我要添加更多信息,因为我获得了通用答案。我提到它是一个新的rails应用程序,所以基本的东西已经预先生成了。这就是我的application.scss
看起来的样子:
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
* compiled file so the styles you add here take precedence over styles defined in any styles
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
* file per style scope.
*
*= require_tree .
*= require main
*= require_self
*/
仍然没有任何作用
答案 0 :(得分:4)
/*
*= require_tree .
*= require_self
*/
将以上内容添加到application.scss或application.css.scss文件中
答案 1 :(得分:2)
in your application.css, try adding
*= require main
*= require_self
hope this helps
答案 2 :(得分:2)
看起来我能让它发挥作用的唯一方法是将@import main;
添加到application.scss
。看起来样式最终会在每个页面上使用(这是rails中的默认值吗?)。
这不是我理想的解决方案,但这是我唯一能够通过要求方法让任何样式工作的方法。
答案 3 :(得分:2)
我无法得到上述工作的答案,但我认为我找到了一个简单的解决办法,使Rails的行为符合预期。
在HEAD部分添加
<%= stylesheet_link_tag params["controller"], media: 'screen' %>
现在app / assets / stylesheets /中的css / SASS / Scss文件将加载。
可悲的是,你仍然需要预先准备好事情。 GRR。答案 4 :(得分:0)
我认为application.scss文件应该抓住所有的 样式表在它的文件夹和子文件夹中,但事实并非如此。 (奇怪的是, .js文件加载就好了。)
通过向application.scss添加*= require_tree .
,我认为它应该像您期望的那样以递归方式加载所有文件。
答案 5 :(得分:0)
使用Rails 4时
确保您的Gemfile使用sass-rails gem
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
你已经创建了app / assets / stylesheets / main.scss,太棒了!
现在更新application.scss以包含它:
@import "main";
您还需要以这种方式包含各种gem样式表:
@import "bootstrap";
你不应该有一个application.css文件 - 如果你有一个,请删除它。
以递归方式包含样式表是一种不好的做法,因为顺序很重要,而冲突的样式将级联,从而相互冲突。我对你的递归问题没有答案,因为自升级到Rails 4以来我不是这样做的
答案 6 :(得分:0)
对我来说这就是解决方案 是将css文件链接到您的根目录 另外,请确保您的application.html.erb包含以下行:
<%= stylesheet_link_tag 'application', media: 'all' %>