2011-09-28 9 views

Odpowiedz

41

arkusze stylów, które nie są zawarte w manifeście (bezpośrednio lub przez nazwę pośrednio przez require_tree) nie są prekompilowane, więc nie będą dostępne w produkcji.

Należy dodać arkusz do listy pozycji, aby wstępnie skompilować w środowisku application.rb.

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

A potem do niego dostęp w widoku:

 
stylesheet_link_tag('960sm') 
+0

Dzięki za pomoc w uporządkowaniu przebiegu aktywów. – hagope

+3

Działa dobrze, bardzo mi pomógł, ale opis na application.css daje inny pomysł na temat jego działania: .../* * To jest plik manifestu, który automatycznie zawiera wszystkie arkusze stylów dostępne w tym katalogu * i wszelkie podkatalogi. Możesz dodać style dla całego zastosowania do tego pliku i będą one widoczne na górze pliku skompilowanego, ale ogólnie lepiej jest utworzyć nowy plik dla każdego stylu. * = require_self * = require_tree. */ –

+0

to pomogło mi ... po kilku godzinach znalezienia rozwiązania – justcode

4

Zamiast zarządzania listę plików CSS, może wolisz po prostu dostosować rozszerzenie dodając .scss do nazwy pliku.

Stąd 960sm.css staną 960sm.css.scss.

Nie powinno to niczego łamać, ponieważ prawidłowy CSS jest prawidłowym SCSS.

+1

To dobrze, ale pamiętaj * nie *, aby dodać .scss na liście prekompilacji. "Zawsze określ [oczekiwaną skompilowaną nazwę pliku, która kończy się .js lub .css] (http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets), nawet jeśli chcesz dodać pliki Sass lub CoffeeScript do prekompilacji szyk." – AlexChaffee

0

Jeśli masz dużo aktywów autonomicznych, wtedy zamiast dodawania każdego z nich do listy, jak ten

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

może chcesz po prostu prekompilacji wszystko, tak:

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 

(Oparte na code in the Rails Guide.)