2012-07-05 10 views
5

(ほとんど)皆のようにHTML5Shivをソースから直接使用しないことについてこのpost(推奨読書)を読んだ後、私はhtml5shiv.jsを私のアプリはRails 3.2 Asset Pipelineを使っています。Rails 3.2 Asset Pipeline + html5shiv.JSベンダー/アセット/ javascript

javascriptのミニバージョンと非ミニバージョンの両方をダウンロードしました。大会では、サードパーティのファイルをvendors/assetsフォルダに追加するよう指示しています。

1)ベンダ/アセット/ javascripフォルダに追加する必要があるバージョンはどれですか(縮小されているかどうかは分かりません)。

2)条件付き参照<!--[if lt IE 9]>なので、スクリプトはどのように呼び出す必要がありますか?

別のファイルとして保存したいので、application.jsマニフェストに追加したくないので、条件を使用します。私は一種の迷子だ!

ご協力いただければ幸いです。

おかげ

答えて

8

あなたが好きな場合は、Railsがパイプラインを通じて生産モードでそれを圧縮しますが、JSのunminifiedバージョンを使用することができます。

シーブを別のファイルとして保存するには、/vendor/assets/javascripts/ディレクトリにhtml5.js(または何でも)を作成して独自のマニフェストを指定します。そのファイルでは、html5shivが必要です(マニフェストとスクリプトは同じディレクトリにあると仮定します)。その後、

//= require html5shiv 

または

//= require html5shiv.min 

と条件付きブロックであなたのレイアウトでマニフェストが含まれています。 HAMLのようなもの:

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

テストする前にアプリケーションサーバーを再起動してください。 <! - [場合はIE 9 LT]> <スクリプトSRC = "/資産/ html5shiv:

+0

を使用することができ、私はあなたが言ったことを試みたが、HTMLが生成されたが、このです。 JS?ボディ= 1" タイプ= "テキスト/ javascriptの"> <スクリプトSRC = "/資産/ html5.js?ボディ= 1" タイプ= "テキスト/ javascriptの"> 両方のファイルが同じを持っています私がアクセスしようとした場合は?body = 1を使用するよりも空です。 ?body = 1を削除すると、okと表示されます。しかし、私が資産をレイクしようとすると:html5shiv.jsはコンパイルされず、プロダクションモードでサーバーを実行するとエラーが発生します。私は何が欠けていますか? –

+0

私の資産は提供されていなかったと思います。今はすべてがうまくいくようです。どうもありがとうございました。 –

+1

'config/environments/production.rb'のプリコンパイルリストにカスタムマニフェストを追加することを忘れないでください。これには指示がありますが、例を挙げます:' config.assets.precompile + =%w [html5.js] ' –

1

それとも、直接

/[if lt IE 9] 
    %script{ src: "http://html5shim.googlecode.com/svn/trunk/html5.js", type: "text/javascript" } 
関連する問題