是否可以添加一个在asset_path中定义资产的变量?像
test.js.erb
img_container = function(value){
var img = "<%= asset_path('" + value + "' %>";
console.log(img);
}
打印
/ + value +
答案 0 :(得分:2)
我知道现在已经很晚了,但我已经多次遇到这个帖子,因为我一直遇到这个问题(并且诅咒资产管道)。我终于找到了解决方案!
将数据属性添加到html标记,并将asset_path添加为其值。然后你可以用jQuery.data()读取它,所以:
<%= image_tag("path/to/your/image.png",
id: "my_image_id",
data: {gif_url: asset_path("path/to/your/image.gif"}) %>
在你的javascript中:
var new_image_path = $("#my_image_id").data("gif-url");
答案 1 :(得分:1)
如果你知道你正在处理的价值范围,并且它不是一百万种不同的选择,还有另一种方法可以解决这个问题。声明javascript对象中的所有图像文件,打印到页面源代码中,然后引用函数中的对象值。像这样:
// Array of values for country flag images
var country_flags= {};
country_flags["GB"]='<%= asset_path('GB.jpg') %>';
country_flags["ES"]='<%= asset_path('ES.jpg') %>';
然后:
document.getElementById('img').src = country_flags["GB"];
或者像这样,如果你想从其他变量中提取标志名称:
document.getElementById('img').src = country_flags[country_code];