我读到了添加路由,向控制器添加方法以及使用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。
答案 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的观点,即资产是一种更好的方法