我一直在关注 https://github.com/thoughtbot/paperclip/wiki/Restricting-Access-to-Objects-Stored-on-Amazon-S3 和 Rails 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是未定义的,这可能也与路由有关......我觉得我做的一切都错了。
撕掉我的头发。谢谢!
答案 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)