Я создаю приложение парсера логов. Я следовал учебному пособию о том, как сделать функцию загрузки, которая работала. Моя new.html.erb
для моей функции загрузки выглядит следующим образом (учебное пособие было адаптировано для приема резюме, поэтому некоторые методы из моего кода читаются как @resume
):
<div class="container">
<% if @resume.errors.present? %>
<div>
<ul>
<% @resume.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div>
<%= form_for @resume, html: { multipart: true } do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<br><br>
<%= f.label :attachment %>
<%= f.file_field :attachment %>
<br>
<%= f.submit "Save" %>
<% end %>
</div>
Мой resume.rb
выглядит так:
class Resume < ApplicationRecord
mount_uploader :attachment, AttachmentUploader
validates :name, presence: true
end
Мой attachment_uploader.rb
выглядит так:
class AttachmentUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick
# include CarrierWave::MiniMagick
# Choose what kind of storage to use for this uploader:
storage :file
# storage :fog
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
В качестве следующего шага я пытаюсь загрузить заархивированный файл, содержащий несколько файлов журнала. Я столкнулся с этим вопросом , в котором объясняется, как его распаковать, а не как извлечь при загрузке заархивированного файла. Код оттуда выглядит так:
Zip::ZipFile.open(file_path) { |zip_file|
zip_file.each { |f|
f_path=File.join("destination_path", f.name)
FileUtils.mkdir_p(File.dirname(f_path))
zip_file.extract(f, f_path) unless File.exist?(f_path)
}
}
Где мне разместить эти конкретные строки кода (из URL, который я вставил выше) в моей программе, если они вообще совместимы? Должно ли оно быть в файле .erb
или .rb
, и если да, то какой и как?