Ruby on rails 如何在ruby文件中直接使用循环为haml创建表?

Ruby on rails 如何在ruby文件中直接使用循环为haml创建表?,ruby-on-rails,ruby,sinatra,haml,Ruby On Rails,Ruby,Sinatra,Haml,我正在尝试创建一个表来显示zip文件的内容,如下所示: Name Size asdf1.jpg 100KB asdf2.jpg 200KB asdf3.jpg 300KB 我的代码在这里(实际上,我是从ZipRuby的自述中复制的): 还有我的haml代码: -# checkresult.haml %table %thead %tr %th Name %th Size %tbody %tr -# I want to sh

我正在尝试创建一个表来显示zip文件的内容,如下所示:

Name      Size
asdf1.jpg 100KB
asdf2.jpg 200KB
asdf3.jpg 300KB
我的代码在这里(实际上,我是从ZipRuby的自述中复制的):

还有我的haml代码:

-# checkresult.haml
%table
%thead
    %tr
        %th Name
        %th Size
%tbody
    %tr
        -# I want to show files in zip here
对不起,英语不好,标题不好。
(使用Sinatra v1.4.6(使用Puma。)

您可以通过为Sinatra应用程序中的实例变量赋值来传递数据以进行
haml
渲染。请通过

您需要对myapp.rb进行一些更改,如下所示。我们定义
@result
数组来收集结果

# myapp.rb
post 'checkfile/?' do

    @result = []  # this will hold results.

    Zip::Archive.open('zip_file.zip') do |ar|
        ar.each do |f|
            @result << [f.name, f.size, f.comp_size]
        end
    end

    haml :checkresult
end

PS:我无法在我的Windows机器上安装ZipRuby,因此上面的部分代码是基于猜测的-希望你知道必须做什么。

你确定你使用的是
RubyonRails
?您能确认您正在使用的web框架吗?使用Sinatra v1.4.6(与Puma一起)。谢谢您的评论!:)
# myapp.rb
post 'checkfile/?' do

    @result = []  # this will hold results.

    Zip::Archive.open('zip_file.zip') do |ar|
        ar.each do |f|
            @result << [f.name, f.size, f.comp_size]
        end
    end

    haml :checkresult
end
-# checkresult.haml
%table
%thead
    %tr
        %th Name
        %th Size
        %th Compressed size
%tbody
    %table
        - @result.each do |i|
            %tr
                %td= i[0]
                %td= i[1]
                %td= i[2]