2016-05-28 1 views
0

私のRailsアプリケーションでは、いつも利用したいと思ういくつかのJSファイルがあり、app/assets/javascripts/globalsに入れてapplication.jsから//= require_tree ./globalsまでコンパイルします。Railsで特定のJSファイルを分離する

しかし、ビュー固有のJSファイルがいくつかあります。特定のビューまたはコントローラ用にのみ実装されている場合は、そのファイルが優先されます。現在、config/initializers/assets.rbRails.application.config.assets.precompile += %w(foo.js bar.js)でコンパイルされており、それぞれのビューで<%= javascript_include_tag "foo/bar", "data-turbolinks-track" => true %>でアクセスしています。

私は必要なのdiv要素が存在しない場合はその機能を防止する、などif $("#foo").length > 1 ...など条件付きでfoo.js & bar.jsに不可欠な機能を包みました。

その結果、JSファイルは、ビューが訪問されるまで「アクティブ」ではありません。しかし、訪問した後、別のビューを訪れた後でも、JSコードは「アクティブ」です。 JSコードが相関ビューに対してのみ読み取られるようにする制御メカニズムはありますか?

+0

私は最近、[Rails - 特定のページにのみJavascriptファイルを含める方法について](http://stackoverflow.com/questions/37360023/rails-how-to-include-javascript-files-only-on-特定のページ) –

+0

多分[これは](http://brandonhilkert.com/blog/page-specific-javascript-in-rails/)あなたを助けるでしょう –

答えて

0

http://brandonhilkert.com/blog/page-specific-javascript-in-rails/ http://brandonhilkert.com/blog/organizing-javascript-in-rails-application-with-turbolinks/

これは、本当の痛みだけれども、私は、特定のビューを実装しました方法です。

基本的には、常に起動されるスクリプトや特定のコントローラやアクションだけを含むスクリプト名前空間を構築します。

また、コントローラ特有の方法を提供します。 http://guides.rubyonrails.org/asset_pipeline.html#controller-specific-assets

私は正直なところ、これをかなり単純なものとして試してみたいと思います。私はまた、実装を見て、簡単に行動を取ることができると考えています。

「アクティブな」コードの問題です。

1)ドキュメントの準備ができていることを確認してください(および/またはページ:バージョンによってはターボリンク用にロードしてください)。

2)スクリプトの開始を確認してください。

3)ページリフレッシュとターボリンクの両方にアクセスできることを確認します。

いつ、どのように壊れているかによって、さまざまな問題が発生する可能性があります。

関連する問題