Приобретать путь к активам из 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 для изображений. Никаких дополнительных библиотек не требуется.