资产管道在我的Rails 4.2应用程序中的’application.scss’中不起作用

我是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 'bootstrap-sass', '3.3.3'更新你的Gemfile并运行bundle 。 确保在更新后重新启动服务器。

或者,您可以只运行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 

控制器应该从主控制器inheritance!

PS:将字符串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 

但我不建议那样走