Создать загружаемый файл в ruby ​​on rails - PullRequest
11 голосов
/ 23 мая 2011

При посещении страницы

localhost:3000/download_me

вызывает действие контроллера download_me в контроллере foo.

class foo < ApplicationController
  def download_me
    # a file is created here i.e. temp.csv in directory C:\
  end
end

Контроллер должен создать временный CSV-файл и после этого запустить загрузку в браузере, который посещает страницу.

Как я могу это сделать?

1 Ответ

15 голосов
/ 23 мая 2011

Есть ли причина, по которой вы хотите сохранить временный файл на вашем сервере? Если это так, этого должно быть достаточно (используйте fastcsv , который вам нужно установить):

require 'fastercsv'
FILE_PATH= "root/to/tmpfile.csv"

FasterCSV.open(FILE_PATH, "w") do |csv|
    csv << 'add some data'
end

send_file file_path, :type=>'text/csv'

Я полагаю, что вам, вероятно, не нужно хранить файл, поэтому просто замените строку FasterCSV.open на:

csv = FasterCSV.generate do |csv|

Затем выложите CSV в ответ:

send_data csv, :type=> 'text/csv'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...