2012-04-20 39 views
0

嗨我的javascript文件中有一个以下的html。rails + html:如何在我的网页上显示图像

function addToInfoWindow(infoWindowContent) 
{ 
    infoWindowString = '<div id="infoWindowString">'+ 
    '<img src="assets/images/rails.png">'+ 
    '<h2>You Clicked:</h2>'+ 
    '<p>'+infoWindowContent+'</p>'+ 
    '<p><a href="http://www.google.com">See more info</a></p>'+ 
    '<p><a href="http://www.cnn.com">see news</a></p>'+ 
    '</div>'; 
    infoWindow.setContent(infoWindowString); 
} 

问题是我无法让图像显示在信息窗口中。

我意识到这可能是因为rails有某种辅助函数来在其网页中显示图像。但我一直无法找到如何调用它或它是什么。有人可以帮忙吗?

编辑 - 变更为下述响应后以下内容:

function addToInfoWindow(infoWindowContent) 
{ 
    infoWindowString = '<div class="infoWindowString">'+ 
    '<img src="/Users/AM/Documents/RailsWS/cmdLineWS/Businesses/app/assets/images/rails.png">'+ 
    '<h2>You Clicked:</h2>'+ 
    '<p>'+infoWindowContent+'</p>'+ 
    '<p><a href="http://www.google.ca">See Menus</a></p>'+ 
    '<p><a href="http://www.google.ca">Upload a Menu</a></p>'+ 
    '</div>'; 
    infoWindow.setContent(infoWindowString); 
} 

但图像仍然没有显示出来:(

回答

1

如果您使用Rail资产打包的默认设置,它会在资产文件名上附加一个时间戳,意味着只需浏览到/assets/images/foo.jpg就不一定会给您想要的。

获得图像标签的扶手帮助只是image_tag 'example.jpg'。或者如果你只是想要的网址,image_url 'foo.jpg'

对于要存储你可以将它连接到数据属性,例如在视图中,你可以做任何给定的图像:

<a id="image_link" href="#" data-image-url="<%= image_url 'foo.jpg' %>">Click to see image</a> 

可以使用在任何地方得到jQuery的这条道路

var imageUrl = $('a#image_link').data('image-url') 
+0

真棒,非常感谢 – banditKing 2012-04-21 02:53:15

1

您使用的是相对URL的图像(assets/images/rails.png),所以浏览器会尝试从地址相对于当前页面的加载。例如,如果图像是在

http://example.com/assets/images/rails.png 

,但你目前正处于

http://example.com/something/somepage.html 

浏览器将尝试从

http://example.com/something/assets/images/rails.png 

加载它,它就会失败。

您应该使用绝对URL。

+0

感谢您的回应,根据您的建议更改原始功能后,我在上面添加了一些代码。但是,它仍然没有工作。 :( – banditKing 2012-04-20 23:23:56

+0

我建议你传递一个绝对URL,但是你在本地文件系统上传递一个绝对路径,首先尝试'/ assets/images/rails.png'(不要忘记初始斜杠)。 – bfavaretto 2012-04-20 23:44:04

相关问题