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

Chr*_*rke 2 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
Run Code Online (Sandbox Code Playgroud)

路线:

Rails.application.routes.draw do

  root 'static_pages#home'

  get 'download_cards', to: "downloads#download_cards"

end
Run Code Online (Sandbox Code Playgroud)

视图:

<%= link_to "download the cardz", download_cardz_path %>
Run Code Online (Sandbox Code Playgroud)

小智 7

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

<%= link_to "Download Card Game", "/cardgame.zip" %>
Run Code Online (Sandbox Code Playgroud)

这将创建以下链接

<a href="/cardgame.zip">Download Card Game</a>
Run Code Online (Sandbox Code Playgroud)

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