如何从rails应用程序中的assets / images文件夹中获取图像

时间:2012-04-21 22:19:33

标签: javascript ruby-on-rails ruby infowindow

我一直在寻找并寻找这个答案。但是现在几个小时我似乎无法完成这项工作。请帮助我。

我是我的rails应用程序的网页,我正在尝试显示保存在我的资源文件夹中的图像@app/assets/images/rails.png.

我有一个javascript文件,其中包含构造html的以下函数。在这个函数里面,我想把链接传递给图像。这是我目前的代码。

function addToInfoWindow(infoWindowContent)
{

infoWindowString = '<div class="infoWindow">'+
**'<img src="/assets/images/rails.png" />'+**
'<p>'+infoWindowContent+'</p>'+
'<p><a href="http://www.google.com">See here</a></p>'+
'<p><a href="http://www.google.com">Upload a photo</a></p>'+
'</div>';
infoWindow.setContent(infoWindowString);

}

正如您在代码中看到的那样,粗体部分就是问题所在。我尝试了几种不同的url字符串组合来访问该图像文件,但图像没有显示在html元素中。

我看了一下,看了一下像image_url('rails.png')这样的rails辅助函数。但我必须把它们放在错误的地方。有人可以帮帮我吗。请告诉我上面代码中我需要添加哪些函数来获取/assets/images/rails.png处的图片,以便将其网址放在上方突出显示的部分中,并显示在我的视图中。

2 个答案:

答案 0 :(得分:23)

如果您想使用rails帮助程序,则需要将javascript文件“升级”为erb。

只需将其从whatever.js重命名为whatever.js.erb即可。现在rails将在传递文件之前执行所有erb代码(&lt;%=和%&gt;之间的东西)。

所以你可以这样做:

<img src="<%= asset_path( 'rails.png' ) %>" />

More information,见2.2.3。

答案 1 :(得分:3)

您将无法在纯javascript中使用像image_tag这样的rails助手 - 追加.erb并使用asset_path(请参阅klump的回答)