在rails应用程序中创建下载链接

时间:2017-11-06 08:20:43

标签: ruby-on-rails ruby excel

我读到了添加路由,向控制器添加方法以及使用link_to在同一个应用程序中完成所有操作时创建链接。但我有单独的前端和后端项目。后端侧轨应用程序将负责从数据库读取并将excel文件返回到frond-end。如何在前端rails应用程序中运行下载按钮?在我的测试场景中,我创建了一个下载UI按钮,在控制器中有一个路由和方法。我想通过点击此按钮下载位于xlsx的{​​{1}}文件。

我尝试创建一个路由,在控制器中添加方法:

root/spec/test_data/myfile.xlsx

我收到此错误

def download
  workbook_path = File.join( File.dirname(__FILE__), '../myfile.xlsx' )
  send_file(
    File.open( workbook_path ),
    filename: "myfile1.xlsx",
    type: "application/xlsx"
  )
end

如何使用路由和控制器操作下载本地excel文件?我没有No such file or directory @ rb_sysopen - /engine/app/controllers/my_engine/../myfile.xlsx ,因为我已经创建了一个下载按钮。如果这个问题看起来不完整,我很抱歉。我正在使用Rails 4。

2 个答案:

答案 0 :(得分:0)

我会将文件移至assets中的app文件夹 然后做一些像

这样的事情

workbook_path = File.join(File.dirname(File.expand_path(__FILE__)), '../../assets/myfile.xlsx')

workbook_path = Rails.root.join('app', 'assets', 'myfile.xlsx')

答案 1 :(得分:0)

要修复您的确切案例使用:

workbook_path = Rails.root.join('spec/test_data/myfile.xlsx')

但我同意Xavier的观点,即资产是一种更好的方法