想知道如何克服这个问题。在我的Rails应用程序的主页上,我有一个图像滑块:
<div id = "carousel">
<img id ="rotate_images" src="assets/1.1.png"/>
<div id = "back">
<img src = "assets/arrow_back.png">
</div>
<div id = "forward">
<img src = "assets/arrow_forward.png"></div>
</div>
图像正确显示。然后,在同一应用程序的另一个页面上,当我粘贴相同的代码时,图像不会显示。在控制台中我得到:
GET http://localhost:3000/users/assets/1.1.png 404 (Not Found)
我确信你知道,资产文件夹不在'用户'中,它位于'App'文件夹中。我认为制作像src =“../ assets / .. etc”这样的链接可以做到,但不是那么幸运。我使用Rails代码,如:
<%= image_tag("arrow_forward.png") %>
但这只会让我头疼,因为我正在使用与我的img src属性相匹配的jQuery代码。如果它有用,这里是jQuery代码。如果它可以被修改为与Rails image_tag方式连接,那将是很好的,但我真的很好奇为什么资产文件夹找不到正确。谢谢你的帮助。
<script>
$('#back').on({
'click': function () {
var origsrc = $(rotate_images).attr('src');
var src = '';
if (origsrc == 'assets/3.1.png') src = 'assets/2.1.png';
if (origsrc == 'assets/2.1.png') src = 'assets/1.1.png';
if (origsrc == 'assets/1.1.png') src = 'assets/1.1.png';
$(rotate_images).attr('src', src);
}
});
$('#forward').on({
'click': function () {
var origsrc = $(rotate_images).attr('src');
var src = '';
if (origsrc == 'assets/1.1.png') src = 'assets/2.1.png';
if (origsrc == 'assets/2.1.png') src = 'assets/3.1.png';
if (origsrc == 'assets/3.1.png') src = 'assets/3.1.png';
$(rotate_images).attr('src', src);
}
});
</script>
答案 0 :(得分:1)
你有几个选择......
我假设您正在运行rails 3.我认为当您在生产中运行资产管道时,您将获得消化和非消化资产(image-HASHDIGEST.png)。因此,在javascript中的视图代码和硬编码路径中使用资产助手应该是安全的。
因为你指的是<script>
标签中的代码,我假设这是一些也来自你的视图的代码,所以你也应该能够在那里使用erb语法。
使用资产管道时,您也可以使用erb预处理您的javascript。这通常是通过将.erb
附加到文件(some.js.erb)然后在那里使用asset-helper来完成的。这可能是最干净的解决方案。
尽管如此,我认为资产管道很糟糕,因为它为铁轨带来了全新的复杂程度,而且大多数应用程序都过度设计。