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

Ruby on rails 设置访问私有S3内容的路由,ruby-on-rails,amazon-s3,paperclip,Ruby On Rails,Amazon S3,Paperclip,我一直在跟踪 和 尝试让回形针的过期链接工作。我相信我遇到的大部分都是路由类型 在我的作品中,我加入了这样一种方法 def download redirect_to @asset.asset.expiring_url(1000) end 然后在我的路线中,我写下: match "pieces/download" 在我看来,我有: <%= link_to download_asset_path(piece)%> 这似乎远没有起作用,我也不确定是什么搞砸了。我知道我得

我一直在跟踪 和 尝试让回形针的过期链接工作。我相信我遇到的大部分都是路由类型

在我的作品中,我加入了这样一种方法

def download
   redirect_to @asset.asset.expiring_url(1000)
end
然后在我的路线中,我写下:

 match "pieces/download"
在我看来,我有:

 <%= link_to download_asset_path(piece)%>

这似乎远没有起作用,我也不确定是什么搞砸了。我知道我得到了一个路由错误,但它也告诉我,我的下载资源路径是未定义的,这可能也是路由相关的。。。我觉得我做的每件事都是错的


扯掉我的头发。谢谢

尝试将路由文件修改为:

match 'pieces/download' => 'pieces#download', :as => 'download_asset'
您的匹配项需要告诉要转到哪个控制器操作,as选项将允许您命名路由下载资源路径

如果您的工件控制器用于工件资源,它可能更干净,如:

resources :pieces do
  member do
    get :download
  end
end
但是,您需要将链接更改为:

link_to 'Link text', download_piece_path(piece)

进一步阅读:

这条路线肯定会让事情有所不同,非常感谢!我一直在反复阅读这本路线指南,但我觉得一下子消化一下有点难。你关于工件控制器的一点对我来说没有意义,它不会生成一个过期的url,是吗?谢谢!只要这一切对我来说有意义,我就会把它标记为已解决,我可以填补空白。不,它不会生成过期的url。这就是你在控制器动作中所做的。它所做的是创建命名的路由下载路径,该路径映射到适当的控制器和操作,以便您能够提供资源。路由文件用于告诉应用程序可以访问哪些控制器和操作,并为您生成命名的路由帮助程序。谢谢!这非常有帮助,我只是设法让它工作起来。还有一些其他的绊脚石,所以我将继续发表一篇文章,更详细地说明什么对我有用。