2017-08-01 77 views
0

嗨我想在我的项目中创建一个图标,点击时应从公共目录下载文件。Rails3从公共目录下载excel

我没有得到任何错误,但仍然在下载没有发生

请指出我错过了什么。在此先感谢

html.erb

<%= image_tag('down.png', :alt => 'Download file', :title => 'Download file', :id => 'download_sample_icon') %> 

<% content_for (:jq) do %> 
    fetch_file_name = function(){ 
    $.ajax({ 
     url : "/file_uploads/download_import_sample", 
     data : { file_name: $('#file_upload_action').val() } 
    }); 
    } 
    $(document).on("click", "#download_sample_icon", fetch_file_name); 

file_uploads_controller.rb

def download_import_sample 
    file_name = params[:file_name] && params[:file_name].split(' ').map{|e| e.downcase}.join('_')+".xlsx" 
    send_file "#{Rails.root}/public/import_samples/"+"#{file_name}" if file_name.present? 
end 

控制台输出

Started GET "/file_uploads/download_import_sample?file_name=file+one" for 127.0.0.1 at 2017-08-01 13:22:22 +0530 (pid:2840) 
Processing by FileUploadsController#download_import_sample as */* (pid:2840) 
Parameters: {"file_name"=>"file one"} (pid:2840) 
User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 3446 LIMIT 1 (pid:2840) 
Company Load (0.2ms) SELECT `companies`.* FROM `companies` WHERE `companies`.`id` = 1060 LIMIT 1 (pid:2840) 
Sent file /home/user/Project/base/public/import_samples/file_one.xlsx (0.1ms) (pid:2840) 
Completed 200 OK in 120ms (pid:2840) 
+0

只是为了测试,请首先尝试通过ADDRES栏中键入链接downloadiing'主机/ import_samples/file_one.xlsx'如:'本地主机:3000/folder_in_public_directory/my_xls_file.xlsx' –

+0

是的,我曾尝试和它工作正常 – Subi

+0

文件名必须是动态的..?或者它只是一个文件 –

回答

0

尝试

def download_import_sample 
    excel_file = File.join(Rails.root, "public", "folder_in_public_directory") 
    fileName = params[:file_name] && params[:file_name].split(' ').map{|e| e.downcase}.join('_')+".xlsx" 
    send_file(File.join(excel_file, fileName)) 
end