Как распаковать файл после загрузки?(Рубин на рельсах) - PullRequest
0 голосов
/ 28 января 2019

Мне нужно разархивировать заархивированный файл, содержащий файлы журнала, и сохранить их по отдельности как разные записи.Я использовал «carrierwave» для загрузки своих файлов.

В Интернете я нашел способ распаковки заархивированных файлов и поместил его в свой ApplicationsController в качестве вспомогательного метода, чтобы он мог быть доступен для различных контроллеров.Однако каждый раз, когда я пытаюсь распаковать загруженный заархивированный файл, ничего не происходит.Я не уверен, что я делаю неправильно.Я уже установил гемы "rubyzip" и "zip".

Вот мой application_controller.erb:

class ApplicationController < ActionController::Base

    helper_method :airwave

    require 'rubygems'
    require 'zip'

    def airwave (file, destination)
    Zip::File.open(file) do |zip_file|
        zip_file.each do |f|
        f_path = File.join(destination, f.name)
             FileUtils.mkdir_p(File.dirname(f_path))
        f.extract(f_path) 
            end
         end
    end
end

Вот мой index.html.erb:

<tbody>   
  <% @imports.each do |import| %>   

     <tr>   
        <td><h5><%= import.id %></h5></td>
        <td><h5><%= import.name %></h5></td>   
        <td><h5><%= link_to "Download", import.attachment_url %></h5></td>
        <td><h5><%= link_to "Unzip", method: :airwave%></h5></td>
        <td><h5><%= link_to "Delete",  import, method: :delete, confirm: "Are you sure you want to delete #{import.name}?" %></h5></td>   
     </tr>   

  <% end %>   
</tbody>
...