字母Dir.glob的结果

时间:2011-01-27 08:56:50

标签: ruby-on-rails

在我的控制器中我有:

@files = Dir.glob("public/downloads/*")

在我看来,我有:

<% @files.each do |f| -%>
    <p><%= f.split("#{RAILS_ROOT}/public/downloads/")%></p>
<% end -%>

如何按字母顺序排列结果?

2 个答案:

答案 0 :(得分:22)

你应该能够:

@files = Dir.glob("public/downloads/*").sort

答案 1 :(得分:9)

数组Dir.glob返回的顺序取决于您使用的操作系统,如the documentation个状态。在大多数计算机上,这是您期望的顺序,但是例如在heroku上,顺序非常随意。

您可以通过将sort链接到现有方法调用(Dir.glob("public/downloads/*").sort)来对数组进行排序,这是第一个建议的答案。但是,如果您多次使用该方法,为了使Dir.glob始终返回有序数组,创建围绕别名可能会更方便:

class Dir
  class << self
    alias :original_glob :glob

    def glob(*args)
      original_glob(*args).sort
    end
  end
end