Rails - js里面的Asset_path可变吗?

时间:2014-09-04 11:19:56

标签: javascript ruby-on-rails variables asset-pipeline erb

是否可以添加一个在asset_path中定义资产的变量?像

test.js.erb

img_container = function(value){
    var img = "<%= asset_path('" + value + "' %>";
    console.log(img);
}

打印

/ + value + 

2 个答案:

答案 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];