2017-11-06 15 views
0

ルートを追加し、コントローラにメソッドを追加し、link_toを使用してすべてが同じアプリケーションで実行されたときにリンクを作成する方法について読んでいます。しかし、フロントエンドプロジェクトとバックエンドプロジェクトは別々です。バックエンド・サイド・レール・アプリケーションは、データベースから読み込み、Excelファイルをフロントエンドに返す処理を行います。フロントエンドのレールアプリケーションでダウンロードボタンを手に入れたいのですが?私のテストシナリオでは、コントローラにルートとメソッドを含むダウンロードUIボタンを作成しました。このボタンをクリックしてroot/spec/test_data/myfile.xlsxにあるxlsxファイルをダウンロードします。railsアプリケーションにダウンロードリンクを作成する

私は、コントローラにメソッドを追加し、ルートを作成してみました:

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 

を取得していますか?私はすでにダウンロードボタンが作成されているので、show.html.erbはありません。不完全な質問があれば申し訳ありません。私はappassetsフォルダにファイルを移動して、あなたの正確なケースの使用を修正するには

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

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

+0

リンクが機能するようです。 xlsxファイルへのパスを修正します。 – lgowin

答えて

0

を使用しています:

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

しかし、私はXa資産がより良いアプローチであることを示すものです。

+0

Xavierさん、資産フォルダに移動していただき、ありがとうございました。このアプリケーションはサーバーから実行されている宝石なので、Rails.root.joinは機能しません。 – smaan

関連する問題