16

Javascript 機能を Haml ビューに組み込みたいのですが、すべてのビューに挿入したくありません。Javascript ファイルを public/javascripts に配置する必要がありますか、それとも app/assets/javascripts に配置してユーザーから隠し、haml ビュー ファイル内から参照することはできますか?

可能であれば、これらの両方のオプションをどのように実行しますか?

4

3 に答える 3

31

あなたはただ使うべきです

!!!
%html
  %head
    = javascript_include_tag "my_js_file"

ある場所に固有の場合は、使用する必要がありますcontent_for

!!!
%html
  %head
    = yield(:javascripts)

そして、あなたの見解では

- content_for :javascripts do
  = javascript_include_tag "my_js_file"
于 2012-07-12T15:47:18.857 に答える
11

直接含める

javascriptをhamlに直接含めたい場合は、次を使用できます:javascript

:javascript
  $(function() { alert("js inside haml"); }

これをパーシャルに入れ、パーシャルをレンダリングするだけで、ビューをきれいに保つことができます。

参照する

JavaScript を参照するだけでブラウザに取り込ませたい場合は、javascript_include_tagいつものように使用する必要があります。ここでは、javascript ファイルをマニフェストに含めるのではなく、マニフェストにする必要がありますapplication.jshttp://guides.rubyonrails.org/asset_pipeline.htmlconfig.assets.precompileに従って、application.rb にマニフェストを忘れずに追加してください。

(あなたのハムルで):

= javascript_include_tag 'somefile'

(config/application.rb 内):

config.assets.precompile += ['somefile.js']
于 2012-07-12T15:54:55.833 に答える
0

JavaScript が小さくて単純な場合は、Javascript を HAML に直接含めることをお勧めします。

:javascript
  alert('hi hi!')

それ以外の場合は、アセット パイプラインを使用する必要があります。JavaScript が前処理、圧縮、縮小されていることを確認します。また、JavaScript を適切に整理し (スクリプトとベンダー スクリプトを分離するなど)、簡単にテストできるようにする ( jasmine / jasminerice / evergreenなどのテスト フレームワークを使用する) のにも役立ちます。アセット パイプラインを初めて使用する場合は、こちらをお読みください =)

于 2012-07-12T16:22:07.587 に答える