Css 使用Sinatra列出目录中的文件时出错
我正试图跟随这篇西纳特拉教程(从2008年开始):Css 使用Sinatra列出目录中的文件时出错,css,ruby,directory,sinatra,Css,Ruby,Directory,Sinatra,我正试图跟随这篇西纳特拉教程(从2008年开始): 但是在代码上遇到了一些问题,对我来说,这些文件目前没有列在主标题下。当我将dir更改为“/public/files/”时,会显示列表,但单击文件的链接会导致出现错误页面(“Sinatra不知道这首小曲”)。如果我从URL中删除public,在这种情况下它会起作用。如何解决这两个问题 此外,如果“use_in_file_template!”一行出现错误,我只是将其注释掉。 我不熟悉CSS,有人能告诉我在哪里可以找到文本的颜色吗 需要“rubyg
但是在代码上遇到了一些问题,对我来说,这些文件目前没有列在主标题下。当我将
dir
更改为“/public/files/”
时,会显示列表,但单击文件的链接会导致出现错误页面(“Sinatra不知道这首小曲”)。如果我从URL中删除public
,在这种情况下它会起作用。如何解决这两个问题
此外,如果“use_in_file_template!”一行出现错误,我只是将其注释掉。
我不熟悉CSS,有人能告诉我在哪里可以找到文本的颜色吗
需要“rubygems”
需要“sinatra”
需要“路径名”
得到“/”做
dir=“./files/”
@links=Dir[Dir+“*”].map{124;文件|
文件链接(文件)
}.加入
雇员再培训局:索引
结束
帮手
def文件链接(文件)
filename=路径名.new(文件).basename
“”
结束
结束
使用文件模板中的模板!
__结束__
@@索引
@导入“/样式表/iui.css”;
好吧,sinatra(和许多其他web服务器一样)假定public
是静态文件的根目录,它只是在访问其中的文件/dir时不使用它。因此,在您的情况下,您可以更改代码中的某些行(在获取文件列表时将public
添加到路径,并在生成指向文件的链接时将其删除):
get "/" do
dir = "public/files/"
@links = Dir[dir+"*"].map { |file|
file_link(file)
}.join
erb :index
end
helpers do
def file_link(file)
filename = Pathname.new(file).basename
"<li><a href='#{file.sub('public','')}' target='_self'>#{filename}</a></li>"
end
end
get/“do”
dir=“public/files/”
@links=Dir[Dir+“*”].map{124;文件|
文件链接(文件)
}.加入
雇员再培训局:索引
结束
帮手
def文件链接(文件)
filename=路径名.new(文件).basename
“”
结束
结束
这很有趣,我认为两者之间有更多的一致性,谢谢你的回答!
get "/" do
dir = "public/files/"
@links = Dir[dir+"*"].map { |file|
file_link(file)
}.join
erb :index
end
helpers do
def file_link(file)
filename = Pathname.new(file).basename
"<li><a href='#{file.sub('public','')}' target='_self'>#{filename}</a></li>"
end
end