Работая в разработке, у меня нет проблем (после запуска 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)
Однако на производстве мой толчок отклоняется от Heroku, потому чтоСсылки .pngs (star-on.png и star-off.png) не могут быть найдены, поскольку (я думаю) Webpack компилирует их в каталог /public
, поэтому они больше не присутствуют в пути /media/images
. К сожалению, руководства по Heroku не охватывают Rails 6 / Webpack, и все ответы, с которыми я сталкивался, были предназначены для Sprockets, а не для Webpack.
Любой совет будет очень признателен!