小编gru*_*b4r的帖子

如何使用rubyzip解压缩压缩文件夹

我知道如何使用rubyzip检索普通zip文件的内容.但是我解压缩拉链文件夹的内容时遇到了麻烦,我希望你们中的任何人都可以帮助我.

这是我用来解压缩的代码:

Zip::ZipFile::open(@file_location) do |zip|
 zip.each do |entry|
  next if entry.name =~ /__MACOSX/ or entry.name =~ /\.DS_Store/ or !entry.file?
  logger.debug "#{entry.name}"
  @data = File.new("#{Rails.root.to_s}/tmp/#{entry.name}")
 end
end
Run Code Online (Sandbox Code Playgroud)

entry.name为我提供了zip文件中文件的名称.这与普通的zipfile完美配合.但是当从文件夹创建zipfile时,条目的名称类似于:test-folder/test.pdf.当我然后尝试创建该文件时,它告诉我无法找到该文件.这可能是因为它位于拉链内的"测试"文件夹内.

如果我将条目检查为文件夹,则无法找到任何文件夹.所以我认为解决方案是将条目作为流读取,然后将其另存为文件.很容易获得入门流,但如何将其保存为文件?这是我到目前为止所得到的.

Zip::ZipFile::open(@file_location) do |zip|
 zip.each do |entry|
  next if entry.name =~ /__MACOSX/ or entry.name =~ /\.DS_Store/ or !entry.file?
  logger.debug "#{entry.name}"
  @data = entry.get_input_stream.read
  # How do i create a file from a stream?
 end
end
Run Code Online (Sandbox Code Playgroud)

基本上我的问题是:如何从流创建文件?还是比我的更方便?

===编辑===我用paperclip来存储文件.

ruby rubyzip ruby-on-rails-3

6
推荐指数
2
解决办法
6745
查看次数

HAML压痕问题IF

这是我的代码:

-@activities.each do |a|
  -if @i%3 == 0
    %ul
  %li=link_to a.name, a
  -@i += 1
Run Code Online (Sandbox Code Playgroud)

我需要li在if语句中的ul里面.由于缩进,我无法做到这一点.我不能告诉李自动缩进吗?

谢谢

haml if-statement ruby-on-rails

3
推荐指数
1
解决办法
684
查看次数