ruby on rails - rails - Adquirir ruta de activos desde JavaScript
sprockets-rails (5)
Necesito mostrar imágenes en un lienzo HTML5 que se encuentran en la canalización de activos de Rails, pero necesito conocer la ruta para el activo desde JavaScript. Estoy usando js-routes para otras partes de la aplicación, pero no parece proporcionar una manera de obtener la ruta a algo en la tubería de activos.
¿Cuál es la forma correcta de obtener la ruta a un activo de Rails (por ejemplo, una imagen) desde JavaScript?
¿Por qué no agregar un atributo de datos para la ruta dentro de un elemento en su archivo .erb y luego recuperarlo con JQuery?
dentro de some_template.html.erb
<%= content_tag(:div, "", id: ''some-id'', data:{path_to_asset: asset_path("some_image.png")}) %>
entonces en some_javascript.js
var assetPath = $("#some-id").data("pathToAsset");
Encontré el mismo problema en Rails 4.1 y usé los recursos de rails de referencia en coffeescript para las imágenes. No se necesitan bibliotecas adicionales.
Para aquellos que usan HAML puedes hacer:
:javascript
var assetPath = "#{asset_path(''some_image.jpg'')}";
Verifique la gema js_assets (ayudante de Javascript en proyectos de rieles) . Creo que es precisamente lo que necesitas.
De la documentación:
Obtenga la ruta a la aplicación de la plantilla / asset / javascripts / rubrics / views / index.html en javascript:
var path = asset_path(''rubrics/views/index.html'')
En la guía de Rails Asset Pipeline , dan un ejemplo de codificación de activos en sus hojas de estilo preprocesando las hojas de estilo con ERB. Puede usar la misma técnica con JavaScript, suponiendo que .erb
un .erb
al final del nombre de archivo:
var someAssetPath = "<%= asset_path(''some_image.png'') %>";