【发布时间】:2011-01-27 08:56:49
【问题描述】:
在我的控制器中,我有:
@files = Dir.glob("public/downloads/*")
在我看来,我有:
<% @files.each do |f| -%>
<p><%= f.split("#{RAILS_ROOT}/public/downloads/")%></p>
<% end -%>
如何按字母顺序排列结果?
【问题讨论】:
标签: ruby-on-rails
在我的控制器中,我有:
@files = Dir.glob("public/downloads/*")
在我看来,我有:
<% @files.each do |f| -%>
<p><%= f.split("#{RAILS_ROOT}/public/downloads/")%></p>
<% end -%>
如何按字母顺序排列结果?
【问题讨论】:
标签: ruby-on-rails
你应该能够:
@files = Dir.glob("public/downloads/*").sort
【讨论】:
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
【讨论】: