我正在Sinatra制作一个维基,我有以下代码,这有效,它只是让我感到有点笨拙。我试图将所有wiki条目保存在"页面"并将它们显示在主页上作为链接。
get "/" do
@entries = Dir["pages/*.txt"]
@entries.map! { |f| f.split '/' }
@entries.flatten!
@entries.delete_if { |p| p == "pages" }
@entries = @entries.sample(5)
erb :welcome, layout: :page
end
如果任何红宝石天才想表现出雄辩的红宝石,我将非常感激!
答案 0 :(得分:1)
@entries = Dir["pages/*.txt"].
map { |path| path.split '/' }.
flatten.
reject { |path| path == 'pages' }.
sample(5)
最明显的是链式方法调用。这样做也可以实现更多的功能性编程"样式。请注意我是如何用delete_if
替换reject
(使数组变异)(其中没有)。我也删除了" bang"方法,因为这里不需要使用变异方法。这些不应该是你达到的第一件事,因为它们有时会产生意想不到的效果。
例如,我最近发现一位同事写了return string.gsub!(" ", "")
或类似的东西。问题是gsub!
返回nil。使用gsub
代替工作。