2014-07-13 124 views
1

我使用回形針上傳用戶頭像。圖像正確存儲在/ public目錄中。但我無法弄清楚如何讓圖像顯示出來。我使用:url和:path設置玩了大約一個小時,並且無法以圖片在瀏覽器中顯示的方式與它們匹配。 在GET-requests路徑中總有一個'images/localhost',我無法擺脫。 這裏是我的代碼:Rails4 +回形針:Url和路徑不匹配

user.rb

class User < ActiveRecord::Base 
    has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }, :default_url => "missing.png", 
    :url => ':class/:id/:style.:extension', 
    :path => ':url' 
    validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/ 
end 

在HTML標籤的路徑查找該請求看起來像這樣:

<img alt="Original" src="/images/localhost/users/1/original.png?1405249849" /> 

正確的請求這將返回圖像將是
http://localhost:3000/users/1/original.png?1405248482.

如何獲取匹配正確的文件系統路徑的請求。或者:我的設置有什麼問題?

我沒有改變application.rb中或development.rb

最好的問候, 千電子伏

回答

0

你應該採取的paperclip URL或路徑助手儘可能。因此,要顯示的圖像使用:

<%= image_tag @user.avatar.url(:medium) %> 

然後: 圖像URL不是一個文件系統路徑。根據您在回形針中使用的存儲空間,圖像可以位於不同的位置,請參閱回形針寶石的understanding storage

如果使用文件存儲,文件是儲存像

public/system/users/avatar/000/000/013/small/my_pic.png 
+0

對不起,我使用<%= IMAGE_TAG @ user.avatar.url%>顯示圖像。我只是想顯示它被翻譯成的html。這是確切的問題。它給我的路徑與圖像的路徑不匹配。 – keno

+1

我將:路徑更改爲回形針文檔中建議的路徑。該文件位於我的rails應用程序下的/public/users/avatars/000/000/001/original/me.png,我可以使用http:// localhost:3000/users/avatars/000/000成功請求它/001/original/me.png。 但是,<%= image_tag @ user.avatar.url%>返回的是http:// localhost:3000/images/localhost/users/avatars/000/000/001/original/me.png?1405256832,其中是錯誤的,無法找到。 – keno

0

時間戳

你看到的是Paperclip's timestamp地方 - 最後時刻的文件/對象更新。

雖然我找不到這個號碼的任何官方參考,它基本上可以讓你確定你正在處理的文件。根據上面提到的問題,如果你想確保你的訪問者看到最新版本的文件(IE永遠不會被存儲在cache中)

我不確定爲什麼你的瀏覽器之間存在差異存儲圖像&你的路徑。但是,我會說這條路是正確的;你只需要能夠

-

底線 - 如果您的圖片顯示在頁面上,我不認爲有一個與你的路徑中的任何系統問題;如果它不顯示在頁面上,你能提供日誌/對錯誤的引用嗎?

+1

謝謝,時間戳的差異不是問題。我看到我應該更清楚地指出這一點。問題在於路徑的開始。對不起! 日誌: 開始GET「/images/localhost/users/avatars/000/000/001/original/me.png?1405258473」爲127.0.0.1於2014-07-13 17:10:22 +0200 ActionController :: RoutingError(沒有路由匹配[GET]「/images/localhost/users/avatars/000/000/001/original/me.png」): 圖像的正確路徑幾乎相同,只是沒有領先的「/ images/localhost /」。我不明白這個插件來自哪裏? – keno