在 Rails 6 中,如何在 js.erb 文件中使用asset_path?
Posted
技术标签:
【中文标题】在 Rails 6 中,如何在 js.erb 文件中使用asset_path?【英文标题】:In Rails 6, how do you use asset_path in a js.erb file? 【发布时间】:2022-01-22 00:35:37 【问题描述】:例如,我有一张图片位于此处:
app/assets/images/tokens/zombies/Shambler.png
当我在 rails 控制台输入命令时:
helper.asset_path("tokens/zombies/Shambler.png")
返回:
/assets/tokens/zombies/Shambler-(Fingerprint).png
但是,当我在代码中使用这一行时:
token.src = '<%= asset_path("tokens/zombies/Shambler.png") %>';
返回:
bootstrap:83 Uncaught Error: Module build failed (from ./node_modules/rails-erb-loader/index.js):
Error: rails-erb-loader failed with code: 1
at ChildProcess.<anonymous> (neptune07289825/Projects/NarrativeDice/node_modules/rails-erb-loader/index.js:128)
at ChildProcess.emit (events.js:198)
at maybeClose (internal/child_process.js:982)
at Process.ChildProcess._handle.onexit (internal/child_process.js:259)
at Object../app/javascript/packs/map.js.erb (bootstrap:83)
at __webpack_require__ (bootstrap:19)
at bootstrap:83
at bootstrap:83
根据我的研究,我理解这意味着 erb-loader 已检查并在指定的资产路径中找不到资产。我只是不明白为什么,因为我能够在控制台中找到它,它显然在默认管道中,我没有更改清单。
谁能告诉我如何使用 js.erb 文件来做到这一点?
【问题讨论】:
【参考方案1】:管理erb文件中图像的助手是image_path
或image_url
,这取决于您存储图像的位置。
https://api.rubyonrails.org/v6.1.4/classes/ActionView/Helpers/AssetUrlHelper.html
【讨论】:
以上是关于在 Rails 6 中,如何在 js.erb 文件中使用asset_path?的主要内容,如果未能解决你的问题,请参考以下文章
在 rails create controller (Rails 6) 中渲染 new.js.erb