ルートを追加し、コントローラにメソッドを追加し、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
はありません。不完全な質問があれば申し訳ありません。私はapp
にassets
フォルダにファイルを移動して、あなたの正確なケースの使用を修正するには
workbook_path = File.join(File.dirname(File.expand_path(__FILE__)), '../../assets/myfile.xlsx')
または workbook_path = Rails.root.join('app', 'assets', 'myfile.xlsx')
リンクが機能するようです。 xlsxファイルへのパスを修正します。 – lgowin