2012-04-21 67 views
9

我一直在寻找这个答案。但是现在好几个小时,我似乎无法完成这项工作。请帮助我。如何从rails应用程序的assets/images文件夹中获取图像

我为我的Rails应用程序的网页,我试图表现出保存在我的资产文件夹@app/assets/images/rails.png.

我有以下函数构造HTML的JavaScript文件的图像。在这个函数里面,我想把链接传递给图像。这是我目前的代码。

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')。但我必须把他们放在错误的地方。有人可以帮帮我吗。请告诉我在哪里,上面的代码中我需要添加什么函数来获取/assets/images/rails.png上的图像,以便它的url位于上面突出显示的部分,并且显示在我的视图中。

回答

23

如果要使用Rails的helper,你需要“升级“你的JavaScript文件到erb。

只需将它们从whatever.js重命名为whatever.js.erb即可。现在,rails将在传递文件之前执行所有erb代码(<%=和%>之间的内容)。

所以,你可以这样做:

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

More information,参见2.2.3。

+1

工作。哇。我花了4个小时尝试各种各样的东西,一直都是因为该文件没有扩展名!!非常感谢您的帮助 – banditKing 2012-04-21 23:27:43

+1

它总是这样:P很高兴我能提供帮助。 – klump 2012-04-21 23:29:04

+1

请记住,如果您使用的是coffeescript,则使用erb的扩展名是'.js.coffee'而不是'.js.cofee.erb'。 erb是自动的。我知道,这很奇怪。但这就是它的工作原理。这一点信息应该为人们节省一些时间。 – ahnbizcad 2014-11-03 10:44:52

3

您将无法使用Rails的helper像纯JavaScript IMAGE_TAG - 追加.erb和使用asset_path(见klump的答案)

相关问题