Как создать файл на компьютере пользователя, а не на сервере, а затем загрузить с помощью rails - PullRequest
0 голосов
/ 26 июня 2018

Я работаю над тем, чтобы загрузить файл Excel с кодом ниже:

login     = Etc.getlogin
@dataFile = "C:/rails/#{login}data.csv"

csv1=CSV.open(@dataFile, 'w') do |csv|
  $data.each do |eachrow|
    csv << [eachrow.name+"@gmail.com"]
  end
end

send_file(@dataFile, :filename => "#{login}data", :type =>  "application/csv")

Используя приведенный выше код, я могу создать файл и записать данные.

Вместо этого, как мне записать данные в csv и загрузить на компьютер пользователя вместо сохранения на локальном / сервере.

1 Ответ

0 голосов
/ 26 июня 2018

Что вы можете сделать, это сгенерировать строку с библиотекой CSV, используя CSV::generate вместо CSV::open.

Контроллер:

class DataController < ApplicationController
  def download
    respond_to do |format|
      format.csv { send_csv_download }
    end
  end

  private

  def send_csv_download
    string = CSV.generate do |csv|
      @data.each { |row| csv << ["#{row.name}@gmail.com"] }
    end

    send_data string, filename: 'foo.csv', type: :csv
  end

end

конфиг / routes.rb:

get '/download', to: 'data#download'

Просмотр:

<%= link_to 'Download CSV', download_path(format: :csv) %>

Примечание: Очевидно, я понятия не имею, откуда вы взяли ваш @data, поскольку он не указан в вашем вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...