template sassc rails example bootstrap ruby-on-rails-3.1 sass sprockets

ruby on rails 3.1 - sassc - SASS, Rails 3.1: Carga de hojas de estilo en proveedores/activos



sassc-rails (6)

Estoy usando SASS para cargar hojas de estilo en una aplicación Rails 3.1 (sass-rails 3.1). Por ejemplo, los parciales de Sass en app/assets/stylesheets se cargan utilizando @import en application.sass -

@import "pages/common" @import "pages/**/*" @import "jquery-ui.css"

Ahora, también quiero cargar el vendor/assets/stylesheets . Tenga en cuenta que no estoy utilizando el require vendor , ya que @import pages/* parece ser la manera más descarada de hacerlo. Los archivos aquí serán css , y no sass o scss . No puedo usar @import ../../../vendor/assets/stylesheets/* ya que solo funciona para archivos sass y scss .

¿Hay alguna manera de hacer esto?

Actualizar

Lo que tengo ahora es esto.

application.css.scss

//= require_tree . //= require vendor //= require_self

Esto incluye todos los parciales de sass mencionados anteriormente. El require vendor en

vendor/assets/stylesheets/vendor.css parece a

//= require_tree .

Una advertencia de este enfoque es que los mixins de sass (definidos por el usuario y complementos) y las variables comunes no están disponibles en todos los parciales. Lo que tengo ahora es un _common_imports.sass que yo @import primero en todos los parciales.

common_imports.sass

@import "colors" @import "compass/css3/gradient" @import "compass/css3/border-radius" @import "compass/css3/box-shadow"

Importar common_imports en todos los parciales es muy repetitivo.


Intente cambiar la extensión a .scss para la hoja de estilo de su proveedor.

Una vez que hice esto, SASS pudo encontrar la importación requerida.


Cuando estás usando motores, esto se vuelve más complicado. Una ruta rápida de mono es incluir la ruta del proveedor de motores en la SASS_PATH entorno SASS_PATH . Esto es lo que funcionó para mí en el engine.rb :

ENV[''SASS_PATH''] = "#{ENV[''SASS_PATH'']}:#{File.expand_path(''../../vendor/assets/stylesheets/'')}"

A partir de ese momento, siempre puede poner esto en un método para SECAR cuando está incluyendo varios motores en su proyecto.


Hum, yo diría que estás usando el administrador de activos de una manera extraña.

Todo en app / asset / , lib / asset / y vendor / asset / * se asignan en el mismo lugar en / asset /, en el lado web, parece que están todos en la misma carpeta.

Lo que debe hacer, ya que está en los rieles 3.1, no es utilizar css / sass @import pero las ruedas dentadas lo require .

Deberías tener en la parte superior de tu application.sass:

// require pages/common // require_tree ./pages // require jquery-ui // require_self

para que los piñones pongan todo en el mismo archivo en producción y no tenga que cargar un montón de archivos.


Puede usar la ruta de abajo para cargar archivos de activos del proveedor / activos.

Ponga la línea debajo de su archivo application.css, que funcionará muy bien.

*= require_tree ../../../vendor/assets/stylesheets/.

Lo mismo se puede hacer para los activos de Javascript.


Si te estoy entendiendo correctamente, creo que esto podría ayudar.

Agregue lo siguiente a config/application.rb , dentro de la class Application < Rails::Application block:

config.sass.load_paths << File.expand_path(''../../lib/assets/stylesheets/'') config.sass.load_paths << File.expand_path(''../../vendor/assets/stylesheets/'')

Acabo de agregar lo anterior a una aplicación, y las siguientes directivas ahora funcionan:

  • Importar Sass:
    @import ''grid'' en app/assets/stylesheets/application.css.scss encuentra el vendor/assets/stylesheets/_grid.scss archivo vendor/assets/stylesheets/_grid.scss ;
  • Importar CSS regular:
    @import ''background'' , nuevamente en application.css.scss , encuentra vendor/assets/stylesheets/background.css .

¿Eso ayuda? Lo siento si he entendido mal el problema!


Tenga en cuenta que deberá reiniciar los rieles si creó un nuevo directorio de proveedor / * (por ejemplo, proveedor / hojas de estilo). Si está viendo esto en Rails 3.2 o posterior, este es probablemente el culpable más probable.