我最近为某人建立了一个网站,他们希望能够免费下载以.zip文件形式制作的纸牌游戏。
我有下载工作,但想知道是否有"正确"根据Rails放置公共可下载文件的位置。当我将.zip文件放在我的公共文件夹中并更改我的download_cards方法以反映更改时,我得到了一个"无法找到文件"错误信息。
这是我的下载设置:
控制器:
class DownloadsController < ApplicationController
def download_cards
send_file "#{Rails.root}/app/assets/downloads/cardgame.zip", type: "application/zip", x_sendfile: true
end
end
路线:
Rails.application.routes.draw do
root 'static_pages#home'
get 'download_cards', to: "downloads#download_cards"
end
查看:
<%= link_to "download the cardz", download_cardz_path %>
答案 0 :(得分:7)
您可以将文件直接放在public/
文件夹中,然后使用
<%= link_to "Download Card Game", "/cardgame.zip" %>
这将创建以下链接
<a href="/cardgame.zip">Download Card Game</a>
当Rails收到GET /cardgame.zip
时,它会在查找匹配的路由之前检查public/
目录中是否有匹配的文件。根本不需要控制器来提供静态文件。