2014-10-06 93 views
0

回形針使用:url選項有什麼意義? :path選項實際上改變了文件保存的位置,但是:url選項似乎沒有做到這一點。它只在指向可公開訪問的文件位置時纔有效。此時,任何人都可以訪問該網址。如果我更改網址以使其與路徑不匹配,則不起作用。據我所知,它不會以任何方式創建任何路線。有什麼我在這裏失蹤。這個選項有什麼意義?讓別人指定一個:url而不實際創建一個路由似乎過分困惑。回形針:url不會創建路線

回答

2

我發現this post有助於理解:path:url之間的差異。

  • :path設置存儲文件的應用程序中的目錄。
  • :url設置用戶可以用來訪問圖像的網址。

您是對的,回形針不會爲您創建路線。但是,:url選項確實可以讓您選擇用戶可以使用哪些(現有)路線下載特定圖像。

:path:url通常是齊頭並進。如果您堅持回形針:default_url該路徑已爲您配置。只需點擊網址,一切都會正常工作。

更改文件位置

在這個例子中,我呈現的用戶頭像:

<%= image_tag @user.avatar.url %> 

現在,讓我們說,你想改變這種圖像的存儲位置,您可以添加以下代碼爲您的型號:

has_attached_file :avatar, 
    :path => "public/system/:class/:id/:filename" 

但是,圖像將無法成功呈現。這是因爲存儲圖像的新路徑與:default_url不匹配。因此,您還需要指定一個新的URL:

has_attached_file :avatar, 
    :path => "public/system/:class/:id/:filename" 
    :url => "/system/:class/:id/:basename.:extension" 

現在圖像URL匹配,該文件被存儲在服務器上的位置以及圖像渲染成功。

路徑VS URL

總之,:url告訴回形針的服務器上的abouts尋找一個圖像。 :path在創建或更新記錄時會告訴回形針上傳圖像的位置。

:path:url都應指向相同的位置,以便成功呈現圖像。

+0

如果我只能將':url'指向已經存在的路線,那有什麼意義?如何使用此選項有幫助?如果已經有一條路線,是不是我的工作完成了? – wdhilliard 2014-10-08 13:39:24

+0

@wdhilliard我已經用更好的解釋更新了我的答案。本質上':url'告訴回形針在哪裏訪問你的圖像。 ':path'告訴回形針在哪裏上傳圖片。他們需要匹配才能成功呈現圖像 – 2014-10-08 20:48:09

+0

我認爲我的困惑是由於我沒有使用Paperclip爲我生成網址。感謝您的詳細解答。 – wdhilliard 2014-10-08 21:54:58