Rails 6、webpacker: image_pack_tag renders wrong image path, adds "assets/" to URI
Rails 6, webpacker: image_pack_tag renders wrong image path, adds "assets/" to URI
使用 webpacker 使用新的 Rails 6 个应用程序。图像存储在 /app/frontend/images
中。
//added to /app/frontend/application.js
const images = require.context('../images', true)
const imagePath = (name) => images(name, true)
Webpacker 配置:
/config/webpacker.yml contains:
default: &default
source_path: app/frontend
source_entry_path: packs
public_root_path: public
public_output_path: packs
cache_path: tmp/cache/webpacker
check_yarn_integrity: false
webpack_compile_output: true
我的问题:image_pack_tag
错误地将 assets/
添加到图像路径。
<%= image_pack_tag 'media/images/AdminLTELogo.png', alt: 'AdminLTE Logo', class: "brand-image img-circle elevation-3", style: "opacity: .8" %>
渲染...
<img alt="AdminLTE Logo" class="brand-image img-circle elevation-3" style="opacity: .8" src="/assets/%2Fpacks%2Fmedia%2Fimages%2FAdminLTELogo-28f7e31d41f353b3aaff1236c7108479.png">
从路径中删除 assets/
将成功渲染图像。
有什么想法可以将 assets/
添加到图像路径吗?
原因:
就在这个错误之前,我创建了一个名为 'asset' 的模型。我的 routes.rb 文件中的 resources :assets
函数与 image_pack_tag
冲突,在所有图像的路径中插入 assets/
。当我简单地注释掉 routes.rb 文件中的 resources :assets
行时,我意识到了这一点,并且所有图像都已正确加载。
解决方案:
我为我的资产模型命名空间,还在我的 routes.rb 文件中为 resources :assets
行命名空间。所有图像现在都可以正确加载。
使用 webpacker 使用新的 Rails 6 个应用程序。图像存储在 /app/frontend/images
中。
//added to /app/frontend/application.js
const images = require.context('../images', true)
const imagePath = (name) => images(name, true)
Webpacker 配置:
/config/webpacker.yml contains:
default: &default
source_path: app/frontend
source_entry_path: packs
public_root_path: public
public_output_path: packs
cache_path: tmp/cache/webpacker
check_yarn_integrity: false
webpack_compile_output: true
我的问题:image_pack_tag
错误地将 assets/
添加到图像路径。
<%= image_pack_tag 'media/images/AdminLTELogo.png', alt: 'AdminLTE Logo', class: "brand-image img-circle elevation-3", style: "opacity: .8" %>
渲染...
<img alt="AdminLTE Logo" class="brand-image img-circle elevation-3" style="opacity: .8" src="/assets/%2Fpacks%2Fmedia%2Fimages%2FAdminLTELogo-28f7e31d41f353b3aaff1236c7108479.png">
从路径中删除 assets/
将成功渲染图像。
有什么想法可以将 assets/
添加到图像路径吗?
原因:
就在这个错误之前,我创建了一个名为 'asset' 的模型。我的 routes.rb 文件中的 resources :assets
函数与 image_pack_tag
冲突,在所有图像的路径中插入 assets/
。当我简单地注释掉 routes.rb 文件中的 resources :assets
行时,我意识到了这一点,并且所有图像都已正确加载。
解决方案:
我为我的资产模型命名空间,还在我的 routes.rb 文件中为 resources :assets
行命名空间。所有图像现在都可以正确加载。