Во время разработки у меня нет проблем (после запуска bundle exec rails webpacker:install:erb
) с этим кодом в Rails 6 с использованием Webpack:
# app/javascript/raty.js.erb
<% helpers = ActionController::Base.helpers %>
$(document).on("turbolinks:load", () => {
$('.star-rating').raty({
starOn: "<%= helpers.asset_pack_path('media/images/star-on.png') %>",
starOff: "<%= helpers.asset_pack_path('media/images/star-off.png') %>",
readOnly: true,
score: function () {
return $(this).attr('data-score');
}
});
});
Имейте в виду, что я также использую Webpack для загрузки статических ресурсов, поэтому никаких звездочек (хотя я не удалял его драгоценные камни и не касался какой-либо конфигурации, связанной с конвейером ресурсов; просто игнорируя это на данный момент). Это означает, что я храню все свои изображения в app/javascript/images
, а затем требую в соответствии с документацией:
# app/javascript/packs/application.js
// Uncomment to copy all static images under ../images to the output folder and reference
// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)
// or the `imagePath` JavaScript helper below.
//
const images = require.context('../images', true)
const imagePath = (name) => images(name, true)
Однако в производстве мой push отклоняется Heroku, потому что ссылки на файлы .png (star-on.png и star-off.png) не могут быть найдены, поскольку (я думаю) Webpack их компилирует в каталог /public
, поэтому их больше нет в пути /media/images
. К сожалению, руководства по Heroku не охватывают Rails 6 / Webpack, и все ответы, с которыми я сталкивался, предназначались для Sprockets, а не для Webpack.
Любой совет будет очень признателен!