开发者

Set Up Route for Accessing Private S3 Content

I've been following https://github.com/thoughtbot/paperclip/wiki/Restricting-Access-to-Objects-Stored-on-Amazon-S3 and Rails 3, paperclip + S3 - Howto Store for an Instance and Protect Access to try and get Paperclip's expiring links to work. I believe most of what I'm running into is one of the routing variety.

In my pieces_controller I put a method in like this

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

And then in my routes, I put this:

 match "pieces/download"

Then in my view I have:

 <%= link_to download_asset_path(piece)%>

It would seem to be far from working, and I'm not sure what is messed up. I know I'm getting routing errors for 开发者_Python百科one, but it's also telling me that my download_asset_path is undefined, which is likely also routing related... I feel like I'm doing everything all wrong.

Tearing my hair out. Thanks!


Try modifying your routes file to:

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

Your match needs to tell which controller#action to go to, and the as option will allow you to name the route download_asset_path.

If your pieces controller is for a Piece resource it could be cleaner like:

resources :pieces do
  member do
    get :download
  end
end

But then you would want to change the link to:

link_to 'Link text', download_piece_path(piece)

For further reading: http://guides.rubyonrails.org/routing.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜