2015-02-06 96 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

相關問題