【问题标题】:Set Up Route for Accessing Private S3 Content设置访问私有 S3 内容的路由
【发布时间】:2011-09-28 01:18:51
【问题描述】:

我一直在关注 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 未定义,这可能也与路由相关......我觉得我做的一切都错了。

扯掉我的头发。谢谢!

【问题讨论】:

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


    【解决方案1】:

    尝试将您的路线文件修改为:

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

    你的比赛需要告诉哪个控制器#action去,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

    【讨论】:

    • 那条路线绝对让事情变得与众不同,非常感谢!我一直在阅读和重新阅读该路由指南,但我认为一次消化所有内容有点多。你对片控制器的了解对我来说并没有立即意义,它不会生成一个过期的 url 是吗?谢谢!一旦对我来说一切都有意义,我将把它标记为已解决,我可以填补空白。
    • 不,它不会生成过期网址。这就是您在控制器操作中所做的事情。它所做的是创建命名路由 download_piece_path,将其映射到正确的控制器和操作,以便您能够提供资产。您的路由文件用于告诉您的应用程序可以访问哪些控制器和操作,并为您生成命名的路由助手。
    • 谢谢谢谢谢谢!这非常有帮助,我只是设法让它工作。还有一些其他的绊脚石,所以我将继续发布一些关于什么对我有用的更多细节。
    猜你喜欢
    • 1970-01-01
    • 2019-05-20
    • 2020-01-26
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    相关资源
    最近更新 更多