27

Rails 3.1のエンジンにアセットをどのように提供する必要がありますか?それらはどこに配置する必要があり、自動的に含めることができますか?

元々はTomas Celiznaからの質問

4

1 に答える 1

41

すべてのエンジンのアセット フォルダーへのパスが自動的に読み込まれます。

デフォルトでは、アセット自体はロードされません。require_tree .これは、現在のフォルダー (つまり、メイン アプリケーション アセットのフォルダー) からすべての css/js をロードしますが、エンジン アセットについては何も述べていない でロードが行われるため、理解できます。

簡単な解決策は、ユーザーに、application.js/css またはその他の必要な場所で js/css を要求するように依頼することです。パスが正しく読み込まれるため、ユーザーはアセットの名前を指定するだけで済みます (エンジンの名前を使用することをお勧めします)。例:

に追加main_app/app/assets/javascripts/application.js:

//= require your_engine_name

js を別のファイルに分割した場合、ファイルにyour_engine_name/app/assets/javascripts/your_engine_name.jsは次のものが含まれる可能性があります。

//= require_tree .

これにより、すべての js ファイルがyour_engine_name/app/assets/javascripts/"." としてロードされます。ローカル フォルダー (この場合は、エンジンの JavaScript のフォルダー) を参照します。

ActionView::Helpers::AssetTagHelper.register_javascript_expansionが設定されている場合、何の効果もないように見えることに注意してくださいconfig.use_sprockets。その場合、彼らが少なくとも警告を出すことを願っています。

エンジンをインストールする rake タスクがある場合は、application.js に追加できます。

ユーザーがそれを含める別の方法は<%= javascript_include_tag "your_engine_name" %>、erb レイアウトに挿入することです。

自動的に挿入する方法はないと思います

于 2011-05-04T01:57:48.267 に答える