使用 ERB 在 Javascript 中设置 CSS backgroundImage 路径

Setting CSS backgroundImage path in Javascript with ERB

我正在尝试使用 javascript 文件中的 erb 设置元素的背景图像

document.getElementById("logo").style.backgroundImage = "<%= asset_path('logo.png') %>";

但是图片不显示。

当我检查浏览器上的元素并访问为图像生成的 url 时,图像出现了。

当我将 backgroundImage 更改为 backgroundColor = "red" 时,它起作用了。

所以如果路径是正确的,并且用于设置元素样式的 js 有效,那么问题是什么?

您应该使用 css 来执行此操作。

.logo {
  background-image: '/assets/images/logo.png'
}

作为替代方案,您可以在布局或页面 erb 文件中使用突兀的 Javascript:包含标签并使用 ruby 嵌入代码。

这不起作用,因为语法不正确,您缺少 url 部分!

document.getElementById("logo").style.backgroundImage = "url(<%= asset_path('logo.png') %>)";

这应该可以解决问题;)

但是,为什么你用javascript做这样的事情而不是CSS?