gpt4 book ai didi

javascript - 将我的文件重命名为 .js.erb 允许我在 javascript 中写入 erb,但不能在 erb 中写入 javascript

转载 作者:行者123 更新时间:2023-11-27 22:43:57 26 4
gpt4 key购买 nike

我在 Rails 应用程序上使用 chessboard-0.3.0.js。由于 Rails Assets 管道的问题,我必须编辑渲染图像的 js 代码的每个部分,例如 Pieces。chessboard.js 的第 445 行说

cfg.pieceTheme =  'img/chesspieces/wikipedia/{piece}.png'

这当然会给 Rails 带来问题,所以我用 .erb 扩展名重命名了 chessboard 并将该行更改为

cfg.pieceTheme =  <%= asset_path('chesspieces/wikipedia/{piece}.png') %> 

将所有需要的图像放入 asset/images 文件夹后。

我的问题是图像仍然没有渲染,我猜这是因为 {piece}.png 放置在该行中的方式,这基本上是 Rails 助手中的 js,对吧?我认为这就是为什么我的图像没有被渲染的原因。当然,我可以阅读整个“几乎 2000”行代码,并尝试找到一种方法来逐个访问每个图像,但我可能会在此过程中破坏其他东西,管理 2k 行并不有趣像我这样的初学者。

有没有办法在不重写代码的更好部分的情况下解决这个问题?

最佳答案

有一个替代方案需要重写一些 js。

基本上,代码不起作用的原因是因为 erb 在渲染之前编译,但 js 在渲染之后执行,因此 asset_path 不正确且不是动态的。

您可以创建一个列出所有可用路由的对象,然后使用它来插入路径名。

假设你的循环类似于

var piecesList = [
"first",
"second"
]
$.each(var piece in piecesList) function(piece) {
var image_path = "img/path/{piece}.png"
}

您可以像这样手动分配对象中的所有这些部分

   var piecesRoutes = {
"first" : "<%= image_path('chesspieces/first.png') %>",
"second" : "<%= image_path('chesspieces/second.png') %>",
}

然后在循环中,像这样调用它们

var image_path = piecesRoutes[piece]

关于javascript - 将我的文件重命名为 .js.erb 允许我在 javascript 中写入 erb,但不能在 erb 中写入 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38553060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com