我目前有filenames.html.erb文件,其中包含:
<ul style ="list-style-type:none">
<% for file in @files %>
<li>
file name is: <%= file %>
</li>
<% end %>
<ul>
我对routes.rb进行了必要的更改,并向控制器添加了def
方法。
现在,它将列出当前目录中的所有文件,但是如何编写一个显示当前目录中所有子文件夹内容的方法?
答案 0 :(得分:0)
Ruby有两种简单的方法来显示递归文件列表。您将尝试与他们合作并决定哪种更适合您的需求:
Ruby的Find类有一个很好的例子,展示了如何以递归方式下降到目录层次结构。
Ruby的Dir类可以在文件下载到文件夹时返回文件列表,但您必须解析该列表。 Dir的foreach
将迭代地向您返回文件,这与Find返回的类似。在任何一种情况下,使用目录名**
来表示您希望Ruby开始深入研究的位置。
例如,我创建了一组简单的嵌套文件夹,如:
foo
├── bar
│ └── baz2.txt
└── baz.txt
如果我cd
到“foo”目录并启动IRB:
>> Dir['./**/*']
[
[0] "./foo",
[1] "./foo/bar",
[2] "./foo/bar/baz2.txt",
[3] "./foo/baz.txt"
]
Dir['./**/*']
返回了一系列路径。 foreach
将返回相同的列表,但一次只返回一个条目。
无论哪种方式,都由您决定如何表示该层次结构。简单地将文件丢回给用户可能会导致用户界面不良。
此外,您需要添加适当的代码来过滤掉因任何原因应隐藏的文件。