2015-02-06 74 views
0

我在我的app/assets/images/文件夹中有一个名为“Flower.jpg”的图像。 <%=image_tag("Flower.jpg")%>可以显示它,但我想用html显示它。 <img src="Flower.jpg">不会做任何事情。<img src="">不接受图像路径

对于我的模型用户我还使用回形针,其中存储图像public/system/users/avatars/000/000User.avatar_file_name返回绝对文件路径,在这种情况下是这样的:/system/users/avatars/000/000/157/thumb/Flower.jpg?1248273956。将此路径插入到src中,如下所示:<img src="<%[email protected]_file_name%>">可用于显示图像。

我发现为Flower.jpg在我的rails控制台的绝对路径:

> helper.image_tag("Flower.jpg") 
=> "<img alt=\"Flower\" src=\"/assets/Flower.jpg\" /> 

但随后<img src="/assets/Flower.jpg\">不显示,即使<img src="/system/users/avatars/000/000/157/thumb/Flower.jpg?1248273956">一样。这是为什么?

+1

为什么在扩展名末尾有“\”? – Kritner 2015-02-06 16:47:18

+0

@Kritner我不知道。这正是轨道控制台给我的输出。 – 2015-02-09 21:37:43

回答

1

image_tag帮助程序会将标准图像文件夹的路径加入到文件的路径中。在我的版本轨道,这是“/图片/”,所以这

<%=image_tag("Flower.jpg")%> 

呈现出如

<img src="/images/Flower.jpg"> 

与所有类似的资源路径,实际的文件应该是相对于你的应用程序“公用文件夹,即

<RAILS ROOT>/public/images/Flower.jpg 

在Rails的版本,它看起来像默认路径是/app/assets/images/,所以这

<%=image_tag("Flower.jpg")%> 

呈现出如

<img src="/app/assets/images/Flower.jpg"> 

指向此文件:

<RAILS ROOT>/public/app/assets/images/Flower.jpg 

如果你

<img src="Flower.jpg"> 

它将把该文件是在<RAILS ROOT>/public/Flower.jpg,并显然它不在那里,所以img标签不起作用。如果你想自己动手写出来,而无需使用一个帮手,然后给路径从<RAILS ROOT/public文件夹中的文件,即

<img src="/app/assets/images/Flower.jpg"> 

BTW在HTML的代码片段你把scr="代替src="这是会打破它甚至更多。

+0

''也没有做任何事情。不过,我认为它不应该指向'/public/app/assets/images/Flower.jpg'。我有一个'public'文件夹,但它与我的'app'文件夹分开。 'app'似乎在根目录下。 – 2015-02-09 21:37:04

+0

实际文件相对于RAILS_ROOT文件夹在哪里? – 2015-02-10 09:31:34

+0

它需要在你的'RAILS_ROOT/public'文件夹中的某处,但请记住,当你预先部署时,Rails可能会将文件从'RAILS_ROOT/app/assets'复制到'RAILS_ROOT/public'中。 – 2015-02-10 09:38:20