使用Javascript动态更改image_tag文件名

时间:2015-06-26 06:09:07

标签: javascript ruby-on-rails

我总是在我的代码中写这样的东西:

function setSomeImage(image_name) {
$("#some_div").html("<%= image_tag ('image.png') %>");
}

我根据我传递的变量设置图像,我必须使用image_tag帮助程序在rails中正确编写它。但是,Javascript和image_tag并没有很好地协同工作。

我想要做的是,我想用javascript动态操作image_tag文件名。

我现在可以这样写:

function setSomeImage(image_name) {
$("#some_div").html('<img src="/assets/'+image_name+'.png">');
}

但那不干净。 我想使用image_tag帮助器,像这样:

function setSomeImage(image_name) {
$("#some_div").html('<%= image_tag ('+image_name+') %>');
}

但那不起作用。 知道如何将两者结合起来吗?这样做有什么最好的做法吗?

另一个想法是将image_path作为变量直接传递给函数,但这并不总是可行。

2 个答案:

答案 0 :(得分:3)

如果您的js文件的扩展名为js.erb,那么您将能够使用asset_path helper to display some asset,但 您将无法将js变量传递给它,因为首先将评估ruby部分,在此期间,image_name将不会出现js变量。

答案 1 :(得分:0)

image_tag由服务器上的rails应用程序呈现,因此无法在JavaScript中使用它。你认为不干净的第二个代码块可能就像你试图用JavaScript做的那样好。