在javascript代码中访问ruby图像资产

在javascript代码中访问ruby图像资产,javascript,ruby-on-rails,Javascript,Ruby On Rails,我有一个img标签,它是用一个id实现的 <img src="http://www.beached.tv/assets/pause-c1c0a3d060f908372ebecf2eb7e7c018.svg" id="play-button" /> 我想做同样的事情,但我不想引用url,我只想使用rails资产中的图像文件本身 第一部分可以通过以下方式完成: <%= image_tag("play.svg"), :id => "play-button" %> “播

我有一个img标签,它是用一个id实现的

<img src="http://www.beached.tv/assets/pause-c1c0a3d060f908372ebecf2eb7e7c018.svg" id="play-button" />
我想做同样的事情,但我不想引用url,我只想使用rails资产中的图像文件本身

第一部分可以通过以下方式完成:

<%= image_tag("play.svg"), :id => "play-button" %>
“播放按钮”%>

如何修改javascript行以加载pause.svg

您应该将URL作为数据属性传递给图像标记:

<%= image_tag("play.svg", :id => "play-button", :data => { 'play-url' => image_path('play.svg'), 'pause-url' => image_path('pause.svg') } %>

您也可以在js中使用erb模板(
your_file.js.erb
):

$(“#播放按钮”).attr(“src”,“src”);

图像可以通过以下两种方式之一使用:1)作为浏览器从某个主机获取图像的URL。2) 作为数据URI,实际图像数据被编码到URI中,浏览器从URI解码并直接使用它(例如,图像数据已经包含在页面中)。第二种方法通常更复杂,在旧的浏览器中不受支持,因此我想知道为什么您只将图像作为图像资源公开,以便浏览器可以像其他图像一样通过URL访问它?
<%= image_tag("play.svg", :id => "play-button", :data => { 'play-url' => image_path('play.svg'), 'pause-url' => image_path('pause.svg') } %>
var playButton = $("#play-button"),
    playImgSrc = playButton.data('play-url'),
    pauseImgSrc = playButton.data('pause-url');

// Switch to play button:
playButton.attr("src", playImgSrc);

// Switch to pause button:
playButton.attr("src", pauseImgSrc);
$("#play-button").attr("src", '<%= image_tag("play.svg") %>');