Приобретать путь к активам из JavaScript

Мне нужно отображать изображения на холсте HTML5, которые находятся в конвейере Rails, но мне нужно знать путь к ресурсу из JavaScript. Я использую js-routes для других частей приложения, но он, похоже, не дает способа получить путь к чему-то в конвейер активов.

Какой правильный способ получить путь к Rails-ресурсу (например, образ) из JavaScript?

Ответы

Ответ 1

В Rails Руководство по Asset Pipeline они приводят пример кодирования активов в ваших таблицах стилей путем предварительной обработки таблиц стилей с помощью ERB. Вы можете использовать ту же технику с JavaScript, предположив, что вы привязываете .erb к концу имени файла:

var someAssetPath = "<%= asset_path('some_image.png') %>";

Ответ 2

Оформить js_assets (помощник Javascript в проектах rails) gem. Я думаю, что это именно то, что вам нужно.

Из документации:

Получить путь к шаблону app/assets/javascripts/рубрики/views/index.html в javascript: var path = asset_path('rubrics/views/index.html')

Ответ 3

Почему бы не добавить атрибут данных для пути внутри элемента в файле .erb, а затем получить его с помощью JQuery?

внутри some_template.html.erb

<%= content_tag(:div, "", id: 'some-id', data:{path_to_asset: asset_path("some_image.png")}) %>

затем в some_javascript.js

var assetPath = $("#some-id").data("pathToAsset");

Ответ 4

Для тех, кто использует HAML, вы можете:

:javascript
   var assetPath = "#{asset_path('some_image.jpg')}";

Ответ 5

Я столкнулся с той же проблемой в Rails 4.1 и использовал ссылку на ресурсы rails в coffeescript для изображений. Никаких дополнительных библиотек не требуется.