Rails 3.1のエンジンにアセットをどのように提供する必要がありますか?それらはどこに配置する必要があり、自動的に含めることができますか?
1 に答える
すべてのエンジンのアセット フォルダーへのパスが自動的に読み込まれます。
デフォルトでは、アセット自体はロードされません。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 レイアウトに挿入することです。
自動的に挿入する方法はないと思います