我在Rails 5.1应用程序中使用@ rails / webpacker 3。我一直试图弄清楚是否有办法不必定义导入相应pack / * .js文件中的每个单独的图像。
我有默认的webpacker配置设置和保存在此位置的图像文件。
<app_root>/app/javascript/images/image.png
在我看来,我有图像元素集
#<app_root>/app/views/layouts/application.html.erb
...
<img src="<%asset_pack_path 'images/image.png%>">
...
除非我将其导入到我在此处执行的包文件中,否则图像将不会加载:
#<app_root>/app/javascript/packs/application.js
import 'images/image.png'
看起来我正在做额外的不必要的工作来在应用程序视图中呈现图像。我假设asset_pack_path方法和webpacker将执行此图像导入,因为它似乎必须定义它两次是重复代码。
我错过了什么,或者这是如何使用webpack和rails加载图像的设计意图?
看起来像添加到我的JavaScript编写。
#<app_root>/app/javascript/application.js
const images = require.context('../images/', true)
指导是我被其他人指示的问题 - https://github.com/rails/webpacker/issues/705
更新我原来的答案停止了工作。这是目前的工作方式。另见我在https://github.com/rails/webpacker/issues/705的评论
将此添加到app/javascripot/packs/app.js
(或任何包):
// Images
require.context('../images/static', true)
然后在你的Rails视图中使用它们,例如在app/views/layouts/application.html.erb
中:
<img src="<%= asset_pack_path 'media/user.jpg' %>" />
要么
<%= image_pack_tag 'media/user.jpg %>
请注意media/
前缀,并删除原始子文件夹前缀。