资产管道在我的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
但我不建议那样走