除非通过导入手动定义,否则不会加载Rails Webpacker图像

问题描述 投票:1回答:2

我在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加载图像的设计意图?

ruby-on-rails image webpack webpacker
2个回答
1
投票

看起来像添加到我的JavaScript编写。

#<app_root>/app/javascript/application.js
const images = require.context('../images/', true)

指导是我被其他人指示的问题 - https://github.com/rails/webpacker/issues/705


1
投票

更新我原来的答案停止了工作。这是目前的工作方式。另见我在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/前缀,并删除原始子文件夹前缀。

© www.soinside.com 2019 - 2024. All rights reserved.