在Rails 5中放置可下载文件的正确位置

时间:2017-08-09 22:08:19

标签: ruby-on-rails download

我最近为某人建立了一个网站,他们希望能够免费下载以.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 %>

1 个答案:

答案 0 :(得分:7)

您可以将文件直接放在public/文件夹中,然后使用

<%= link_to "Download Card Game", "/cardgame.zip" %>

这将创建以下链接

<a href="/cardgame.zip">Download Card Game</a>

当Rails收到GET /cardgame.zip时,它会在查找匹配的路由之前检查public/目录中是否有匹配的文件。根本不需要控制器来提供静态文件。