在我的 Rails 4.2 应用中,资产管道在 'application.scss' 中不起作用
Assets pipeline doesn't work in 'application.scss' in my Rails 4.2 app
我是 Rails 的新人,如果这是一个愚蠢的问题,我深表歉意。但我无法解决我的问题:我将 Bootstrap 添加到我的新应用程序,但它仍然没有使用任何新样式。
我已将 application.css 重命名为 application.scss 并创建了这样的结构:
|-stylesheets
|-elements
|--articles
|---article.scss
|-application.scss
Application.scss
/* User styles
* Plugins first
*/
@import "bootstrap-sprockets";
@import "bootstrap";
@import "elements/**/*";
/*
* 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 vendor/assets/stylesheets of plugins, if any, 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_self
*/
我在 Gem 文件中添加了
source 'https://rubygems.org'
ruby '2.2.0'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2'
# Установка Bootstrap
gem 'sass-rails'
gem 'bootstrap-sass'
#Autoprefixer optional, but recommended. It automatically adds the proper vendor prefixes to your CSS code when it is compiled.
gem 'autoprefixer-rails'
Application.js
//= require jquery
//= require jquery_ujs
//= require bootstrap-sprockets
//= require_tree .
我尝试在 article.scss 中编写任何样式规则,但我的应用程序不使用它们,因此任何 Bootstrap 样式。
有一个更简单的方法,我将描述顺序:
添加 gem 'bootstrap-sass'
后执行 bundle install
,重启服务器
比添加 config/application.rb
下一个字符串:
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
对于您的图像,比在 app/assets/stylesheets
中创建 custom.css.scss
并添加到 @import "bootstrap";
,
在您的 custom.css.scss
中,您可以编写自己的样式
我怀疑您的环境中有旧版本的 bootstrap。尝试使用 gem 'bootstrap-sass', '3.3.3'
和 运行ning bundle
更新您的 Gemfile。确保在更新后重新启动服务器。
或者,您也可以 运行 bundle update
。
几个小时后我发现了一个问题 - 我的 pages_controller 不正确:
class PagesController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
end
而不是:
class PagesController < ApplicationController
def index_page
end
end
控制器应该继承自主控制器!
P.S:
将字符串 layout "application"
添加到错误的控制器也有帮助:
class PagesController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
layout "application"
end
但我不建议走那条路
我是 Rails 的新人,如果这是一个愚蠢的问题,我深表歉意。但我无法解决我的问题:我将 Bootstrap 添加到我的新应用程序,但它仍然没有使用任何新样式。
我已将 application.css 重命名为 application.scss 并创建了这样的结构:
|-stylesheets
|-elements
|--articles
|---article.scss
|-application.scss
Application.scss
/* User styles
* Plugins first
*/
@import "bootstrap-sprockets";
@import "bootstrap";
@import "elements/**/*";
/*
* 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 vendor/assets/stylesheets of plugins, if any, 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_self
*/
我在 Gem 文件中添加了
source 'https://rubygems.org'
ruby '2.2.0'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2'
# Установка Bootstrap
gem 'sass-rails'
gem 'bootstrap-sass'
#Autoprefixer optional, but recommended. It automatically adds the proper vendor prefixes to your CSS code when it is compiled.
gem 'autoprefixer-rails'
Application.js
//= require jquery
//= require jquery_ujs
//= require bootstrap-sprockets
//= require_tree .
我尝试在 article.scss 中编写任何样式规则,但我的应用程序不使用它们,因此任何 Bootstrap 样式。
有一个更简单的方法,我将描述顺序:
添加 gem 'bootstrap-sass'
后执行 bundle install
,重启服务器
比添加 config/application.rb
下一个字符串:
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
对于您的图像,比在 app/assets/stylesheets
中创建 custom.css.scss
并添加到 @import "bootstrap";
,
在您的 custom.css.scss
中,您可以编写自己的样式
我怀疑您的环境中有旧版本的 bootstrap。尝试使用 gem 'bootstrap-sass', '3.3.3'
和 运行ning bundle
更新您的 Gemfile。确保在更新后重新启动服务器。
或者,您也可以 运行 bundle update
。
几个小时后我发现了一个问题 - 我的 pages_controller 不正确:
class PagesController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
end
而不是:
class PagesController < ApplicationController
def index_page
end
end
控制器应该继承自主控制器!
P.S:
将字符串 layout "application"
添加到错误的控制器也有帮助:
class PagesController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
layout "application"
end
但我不建议走那条路