簡體   English   中英

Ruby on Rails-不下載文件

[英]Ruby on Rails - Not downloading file

我有此下載鏈接

<%= link_to "Curriculum Vitae", "/download/#{@user.candidato.cv.url}/#{@user.candidato.cv.content_type}" %>

如果我在沒有控制器方法的情況下做了不好的選擇,那么下載將起作用。 但是我在互聯網上讀了很多帖子,說這是一個不好的方法,所以我嘗試了好方法。

這是我的控制器:

    def download
       send_file params[:url] , :type => params[:type], :x_sendfile => true
    end

和路線

match '/download/:url/:type', to: 'users#download', via: 'get'

當我單擊鏈接時,將顯示:

No route matches [GET] "/download/system/candidatos/cvs/000/000/001/original/blank_CV_template_Microsoft_Word.doc"

我到處搜索,但似乎找不到任何東西。 對於文件以及所有我正在使用的回形針

您的路線和方法名稱不匹配。 如果您同時查看“ / download /:url /:type”和“ /download/system/candidatos/cvs/000/000/001/original/blank_CV_template_Microsoft_Word.doc”,則將其視為url和類型。 根據您的匹配路線,您的鏈接路徑應為“下載/網址/類型”。

或者,您也可以采用更簡單的方法。 在標記鏈接中,僅傳遞CV ID並以您的下載方法進行處理

match '/download/:id', to: 'users#download', via: 'get'

def download
   cv = Cv.find(params[:id])
   send_file cv.url , :type => cv.content_type, :x_sendfile => true
end

為我做了什么:

控制器:

def download
    path = params[:url]
    send_file "#{path}.#{params[:format]}" , :type => params[:type], :x_sendfile => true
  end

添加該格式是因為該路徑即使在控制台中也包含了它從未在控制器中添加的擴展名。

視圖:

<%= link_to "Curriculum Vitae", :action => :download, :url => @user.candidato.cv.path, :type => @user.candidato.cv.content_type %>

路線文件:

match '/download/:url', to: 'users#download', via: 'get'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM