the rails present not images asset ruby-on-rails ruby ruby-on-rails-3.1 asset-pipeline

ruby on rails - rails - Activos del motor con rieles 3.1.



the asset is not present in the asset pipeline (1)

¿Cómo debería uno proporcionar activos en un motor en Rails 3.1? ¿Dónde deben ubicarse y pueden incluirse automáticamente?

( originalmente pedido por Tomas Celizna )


Las rutas a las carpetas de activos de todos los motores se cargan automáticamente.

Los propios activos no se cargan por defecto. Esto es comprensible ya que la carga se realiza con require_tree . , que carga todos los css / js de la carpeta actual (es decir, la carpeta de activos de la aplicación principal) pero no dice nada sobre los activos de los motores.

La solución fácil es pedir al usuario que solicite js / css en application.js / css o donde sea necesario. Como las rutas se cargan correctamente, el usuario solo necesita especificar el nombre de su activo (recomendaría usar el nombre de su motor). Ejemplo:

main_app/app/assets/javascripts/application.js a main_app/app/assets/javascripts/application.js :

//= require your_engine_name

Si ha dividido su js en archivos diferentes, su archivo your_engine_name/app/assets/javascripts/your_engine_name.js podría tener lo siguiente:

//= require_tree .

Esto cargará todos los archivos js en your_engine_name/app/assets/javascripts/ , como "." se refiere a la carpeta local (en este caso, la carpeta de los javascripts de su motor).

Tenga en cuenta que ActionView::Helpers::AssetTagHelper.register_javascript_expansion parece no tener ningún efecto cuando config.use_sprockets está establecido. Espero que al menos pongan una advertencia en ese caso.

Si tiene una tarea de rake para instalar su motor, entonces podría hacer el apéndice a application.js.

Otra forma para que el usuario lo incluya es insertar <%= javascript_include_tag "your_engine_name" %> en el diseño erb.

No creo que haya una manera de insertarlo automáticamente