获取文件夹中的所有文件并将其显示为我的 sinatra 应用程序主页上的链接
Getting and displaying all files in a folder as links on the home page of my sinatra app
我正在用 Sinatra 制作一个 wiki,我有以下代码,它可以工作,只是让我觉得有点笨拙。我正在尝试获取 "pages" 中保存的所有 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
如有ruby天才愿意示范eloquentruby不胜感激!
@entries = Dir["pages/*.txt"].
map { |path| path.split '/' }.
flatten.
reject { |path| path == 'pages' }.
sample(5)
最明显的是链接方法调用。这样做也会导致更多 "functional programming" 风格。请注意我是如何用 reject
(不改变数组)替换 delete_if
(改变数组)的。我还删除了 "bang" 方法,因为这里不需要使用变异方法。这些不应该是您首先要做的事情,因为它们有时会产生意想不到的效果。
例如,我最近发现一位同事写了 return string.gsub!(" ", "")
或类似的东西。问题是 gsub!
returns 无。使用 gsub
代替有效。
我正在用 Sinatra 制作一个 wiki,我有以下代码,它可以工作,只是让我觉得有点笨拙。我正在尝试获取 "pages" 中保存的所有 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
如有ruby天才愿意示范eloquentruby不胜感激!
@entries = Dir["pages/*.txt"].
map { |path| path.split '/' }.
flatten.
reject { |path| path == 'pages' }.
sample(5)
最明显的是链接方法调用。这样做也会导致更多 "functional programming" 风格。请注意我是如何用 reject
(不改变数组)替换 delete_if
(改变数组)的。我还删除了 "bang" 方法,因为这里不需要使用变异方法。这些不应该是您首先要做的事情,因为它们有时会产生意想不到的效果。
例如,我最近发现一位同事写了 return string.gsub!(" ", "")
或类似的东西。问题是 gsub!
returns 无。使用 gsub
代替有效。