2011-09-28 2 views

Répondre

41

Les feuilles de style qui ne sont pas inclus dans un manifeste (directement par son nom ou indirectement via require_tree) ne sont pas précompilés, donc ne seront pas accessibles en production.

Vous devez ajouter la feuille à la liste des éléments à précompiler dans l'application d'environnement.rb.

 
config.assets.precompile += ['960sm.css'] 

Et puis accéder à la vue:

 
stylesheet_link_tag('960sm') 
+0

Merci de m'avoir aidé à trier le pipeline d'actifs. – hagope

+3

Fonctionne bien, m'a beaucoup aidé, mais la description sur application.css donne une autre idée de la façon dont cela fonctionne: .../* * Ceci est un fichier manifeste qui comprendra automatiquement toutes les feuilles de style disponibles dans ce répertoire * et tout sous-répertoire. Vous êtes libre d'ajouter des styles à l'échelle de l'application à ce fichier et ils apparaissent au * en haut du fichier compilé, mais il est généralement préférable de créer un nouveau fichier par portée de style. * = require_self * = require_tree. */ –

+0

cela m'a aidé ... après quelques heures de trouver une solution – justcode

4

Au lieu de gérer une liste de fichiers CSS, vous pouvez préférer régler simplement l'extension en ajoutant .scss au nom du fichier.

Par conséquent, 960sm.css deviendrait 960sm.css.scss.

Cela ne devrait pas casser quoi que ce soit comme CSS valide est valide SCSS.

+1

C'est bien, mais n'oubliez pas * pas * d'ajouter .scss dans la liste de précompilation. "Toujours spécifier un [nom de fichier compilé attendu qui se termine par .js ou .css] (http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets), même si vous voulez ajouter des fichiers Sass ou CoffeeScript au précompile tableau. " – AlexChaffee

0

Si vous avez beaucoup d'actifs autonomes, puis au lieu d'ajouter chacun à la liste, comme celui-ci

config.assets.precompile += ['960sm.css'] 

vous voudrez peut-être juste precompile tout, comme ceci:

def precompile?(path) 
    %w(app lib vendor).each do |asset_root| 
    assets_path = Rails.root.join(asset_root, 'assets').to_path 
    return true if path.starts_with?(assets_path) 
    end 
    false 
end 

# Precompile all assets under app/assets (unless they start with _) 
Rails.application.config.assets.precompile << proc do |name, path| 
    starts_with_underscore = name.split('/').last.starts_with?('_') 
    unless starts_with_underscore 
    path = Rails.application.assets.resolve(name).to_path unless path # Rails 4 passes path; Rails 3 doesn't 
    precompile?(path) 
    end 
end 

(Basé sur le code in the Rails Guide.)

Questions connexes