2012-07-05 12 views
5

Po przeczytaniu tego post (zalecanego czytania) o tym, że nie używamy HTML5Shiv bezpośrednio ze źródła jak (prawie) wszyscy to robią, staram się dołączyć do html5shiv.js w moja aplikacja korzystająca z Rails 3.2 Asset Pipeline.Rails 3.2 Asset Pipeline + html5shiv.JS w dostawcach/zasobach/javascript

Pobrałem zarówno wersję skróconą, jak i nie-minifikowaną javascript. Konwencja nakazuje dodawanie plików stron trzecich do folderu venders/assets. Mam teraz dwa pytania:

1) Której wersji (minified lub nie-minified) należy dodać do folderu vendors/assets/javascrip?

2) Ponieważ jest to warunkowe odwołanie <!--[if lt IE 9]>, jak powinienem wywołać skrypt?

Nie chcę dodawać go do manifestu aplikacji application.js, ponieważ chcę zachować go jako osobny plik i chcę użyć warunku. Jestem trochę zagubiony!

Każda pomoc będzie bardzo ceniona.

Dzięki

Odpowiedz

8

Można użyć unminified wersję JS jeśli chcesz, Rails będzie ściskać go w trybie produkcyjnym poprzez rurociąg.

Aby zachować shiv jako osobny plik, możesz nadać mu własny manifest, tworząc html5.js (lub cokolwiek innego) w swoim katalogu /vendor/assets/javascripts/. W tym pliku wymaga html5shiv (zakładam, że manifest i skrypt są w tym samym katalogu).

//= require html5shiv 

lub

//= require html5shiv.min 

A potem to manifest w układzie w bloku warunkowego. W języku HAML coś takiego:

== "<!--[if lt IE 9]>" 
= javascript_include_tag 'html5' 
== "<![endif]-->" 

Pamiętaj o ponownym uruchomieniu serwera aplikacji przed testowaniem.

+0

Próbowałem, co pan powiedział, a HTML generowany jest następujący: - Oba pliki mają takie same treść i jeśli próbuję uzyskać dostęp, niż za pomocą? body = 1 show pusty. Jeśli usunę "ciało" = 1, zostaną wyświetlone w porządku. Ale kiedy próbuję grabić zasoby: prekompilacja, plik html5shiv.js nie jest kompilowany i po uruchomieniu serwera w trybie produkcyjnym pojawia się błąd. czego mi brakuje? –

+0

Przypuszczam, że moje zasoby nie były serwowane. Teraz wszystko wydaje się działać. Dziękuję Ci bardzo. –

+1

Pamiętaj, aby dodać własne manifesty do listy prekompilacji w 'config/environments/production.rb' Ma on instrukcje, ale przykład:' config.assets.precompile + =% w [html5.js] ' –

1

Albo można użyć bezpośrednio

/[if lt IE 9] 
    %script{ src: "http://html5shim.googlecode.com/svn/trunk/html5.js", type: "text/javascript" } 
Powiązane problemy