我正在使用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加载图像的设计意图?
答案 0 :(得分:1)
通过将此添加到我的javascript中看起来好像。
<object width="100%" height="800" type="application/pdf" data="/example.pdf" id="pdf_content">
<p>Insert your error message here, if the PDF cannot be displayed.</p>
</object>
指导是我在其他人指导的问题 - https://github.com/rails/webpacker/issues/705
答案 1 :(得分: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/
前缀,并删除原始的子文件夹前缀。
答案 2 :(得分:0)
<%= asset_pack_path "media/images/trial.jpg" %>