2012-02-20 11 views
20

Jaki jest właściwy/szyny/najlepsza praktyka sposób wywoływania mediów (np. Drukowanie, ekran itd.) Css, jeśli używasz potoku aktywów Rails 3.1? Wiem, że było to już wcześniej zadawane, ale wszystkie rozwiązania, które widziałem, wydają się bardzo hackowskie, a nie eleganckie rozwiązanie Railsowe, którego oczekiwałem.Poprawny sposób wywoływania specyficznych dla mediów css w potoku Rails 3.1

O ile mogę powiedzieć, proponowane podejście jest utworzenie folderu StyleSheets następująco:

assets 
-stylesheets 
--application.css 
--application-print.css 
--print 
---custom-print.css 
--screen 
---custom-screen.css 

zawartość application.css będących

/* 
*= require_self 
*= require_tree ./screen 
*/ 

zawartość application- print.css jest

/* 
*= require_self 
*= require_tree ./print 
*/ 

następnie dodać poniższe elementy do layoutu

<%= stylesheet_link_tag 'application', media = 'screen, projection' %> 
<%= stylesheet_link_tag 'application-print', media = 'print' %> 

OK, na razie dobrze.

ALE, w moim przypadku na ekranie jest stosowany plik custom-print.css, a do wydruku nie są stosowane css.

Również to podejście ma wpływ na obrazy wywoływane z css. tj. zamiast szukać obrazów w zasobach/obrazach, teraz szuka obrazów w zasobach/arkuszach stylów/ekranie. Może się tu dziać coś innego, ponieważ wygląda na to, że dotyczy tylko javascript css. Zrobię jeszcze więcej sprawdzeń i zgłoś się ponownie.

Moje pytanie brzmi: w jaki sposób radzisz sobie z konkretnymi css dla mediów w strumieniu aktywów Rails? Co jest uważane za najlepszą praktykę? I co robię źle?

Dziękujemy za poświęcony czas!

Odpowiedz

16

Problem stanowi składnia wywołania metody.

stylesheet_link_tag 'application', :media => 'screen, projection' 
stylesheet_link_tag 'application-print', :media => 'print' 

W kodzie zostałeś przypisanie do zmiennej lokalnej o nazwie media

+0

doh! Dziękuję Ci! –

+4

Możesz także użyć '@media print {...}' (IE9 +). Ponadto do produkcji może być konieczne dodanie 'config.assets.precompile + =% w (application-print.css)' w 'config/production.rb' (tak jak musiałem zrobić dla Heroku). – manafire

+0

@ full_lub gdzie to powinno być? w 'application.html.erb'? – mmcrae

Powiązane problemy