设置访问私有S3内容的路由

时间:2011-09-28 01:18:52

标签: ruby-on-rails amazon-s3 paperclip

我一直在关注 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试图让Paperclip的过期链接起作用。我相信我遇到的大部分内容都是路由类型之一。

在我的pieces_controller中,我像这样放了一个方法

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

然后在我的路线中,我把它放在:

 match "pieces/download"

然后在我看来,我有:

 <%= link_to download_asset_path(piece)%>

这似乎远非工作,我不确定是什么搞砸了。我知道我有一个路由错误,但它也告诉我我的download_asset_path是未定义的,这可能也与路由有关......我觉得我做的一切都错了。

撕掉我的头发。谢谢!

1 个答案:

答案 0 :(得分:2)

尝试将路线文件修改为:

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

您的匹配需要告知要转到哪个控制器#操作,并且as选项将允许您命名路由download_asset_path。

如果您的棋子控制器是针对Piece资源的,那么它可能更清晰:

resources :pieces do
  member do
    get :download
  end
end

但是,您可能希望将链接更改为:

link_to 'Link text', download_piece_path(piece)

进一步阅读:http://guides.rubyonrails.org/routing.html