在 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_pathimage_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

js.erb 不在 Rails 6 中渲染

Rails - 如何确保已在 js.erb 中呈现部分内容

Rails 6:Ajax 不接受 js.erb 中的渲染

Rails 6.0.4 远程:true 不在浏览器中 js/ajax 渲染 _partial.html.erb

在rails中使用js.erb