Путаница в создании и записи в файл в Ruby на рельсах - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь создать новый файл, а затем записать в него некоторое содержимое, просто чтобы создать базовую c резервную копию шаблона.

Когда я выхожу из системы значения filename и file_content, они верны, но когда я отправляю данные, все, что я получаю, это файл с именем метода (download_include) и fixnum внутри файл, последний из которых был 15.

  # POST /download_include/:id
  def download_include
    @include = Include.find(params[:id])
    version_to_download = @include.latest_version_record
    filename = "#{version_to_download.name}"
    file_content = "#{version_to_download.liquid_code.to_s}"

    file = File.open(filename, "w") { |f| f.write (file_content) }

    send_data file
  end

Я также пытался send_file, но это выдает ошибку

no implicit conversion of Fixnum into String

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

file = File.open("DOES THIS CHANGE THE FILENAME?", "w") { |f| f.write ("FILE CONTENT?") }

Я чувствую, что упускаю что-то очевидное, но не могу понять это после просмотра множества примеров здесь и в блогах.

1 Ответ

1 голос
/ 16 марта 2020

Если вы не заканчиваете имя файла как опцию для send_data, по умолчанию используется имя метода.

Во-вторых, загрузка хочет прочитать данные из буфера. Я предполагаю, что ваш синтаксис просто отправляет дескриптор файла.

Попробуйте это ...

send_data(file.read, filename: filename)

Или пропустите промежуточный файл и попробуйте ...

send_data(version_to_download.liquid_code.to_s, filename: filename)

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