2011-09-28 68 views
2

我一直在下面 https://github.com/thoughtbot/paperclip/wiki/Restricting-Access-to-Objects-Stored-on-Amazon-S3Rails 3, paperclip + S3 - Howto Store for an Instance and Protect Access嘗試並獲得回形針的到期環節的工作。我相信大部分我遇到的是路由類型之一。設置爲路由訪問私人S3內容

在我pieces_controller我把方法在這樣

def download 
    redirect_to @asset.asset.expiring_url(1000) 
end 

然後在我的路線,我把這個:

match "pieces/download" 

然後在我的觀點,我有:

<%= link_to download_asset_path(piece)%> 

它似乎遠沒有工作,我不知道什麼是搞砸了。我知道我得到的路由錯誤之一,但它也告訴我,我的download_asset_path是未定義的,這可能也是路由相關的......我覺得我做的一切都是錯誤的。

把我的頭髮撕掉。謝謝!

回答

2

嘗試修改你的路由文件到:

match 'pieces/download' => 'pieces#download', :as => 'download_asset' 

你的比賽需要告訴去哪個控制器#動作,而作爲選項將允許你命名的路線download_asset_path。

如果你的作品控制器是一塊資源可能是清潔劑,如:

resources :pieces do 
    member do 
    get :download 
    end 
end 

但是當你想改變鏈接:

link_to 'Link text', download_piece_path(piece) 

對於進一步閱讀:http://guides.rubyonrails.org/routing.html

+0

這條路線肯定會讓所有事情發生變化,非常感謝!我一直在閱讀並重新閱讀該路由指南,但我認爲一次消化所有內容都是非常有用的。你在那裏有關片控制器的位並不立即對我有意義,它不會生成到期的URL嗎?謝謝!只要這一切對我有意義,我將把它標記爲已解決,我可以填寫空格。 – counterbeing

+0

不,它不會生成到期的URL。這就是你在控制器操作中所做的。它的功能是創建命名路線download_piece_path,將其映射到適當的控制器和操作,以便您能夠提供資產。您的路由文件用於告訴您的應用程序可以訪問哪些控制器和操作,併爲您生成指定的路由幫助程序。 – JDutil

+0

謝謝謝謝謝謝謝謝!這非常有幫助,我只是設法讓它工作。還有其他一些磕磕絆絆的問題,所以我會繼續討論一些關於我的工作的更多細節。 – counterbeing