想象一下这个结构:

   /project
       /templates
          view1.haml
          view2.haml
          misc_views/
             view3.haml
             view4.haml
             even_deeper/
               view5.haml
       /public
          script1.js

模板的深度可能会有所不同,如果我想从中包含一些文件,我希望引用公共目录有没有帮手或其他花招带我去公共目录在我的视图中包含../../../public/script1.js或../../public/script1.js之类的内容似乎很糟糕肯定有更好的办法。

最佳答案

您可以使用the settings.public configuration来引用公共目录。例如:

get "/" do
  js = File.join( settings.public, 'script1.js' )
  File.exists?( js ) #=> true
end

由于这是一个绝对路径,因此无需使其相对于视图来获取文件。你可以从你的视图中找到这个,但是我个人会将路径设置为控制器的一个实例变量。
get "/" do
  # If you really only need the directory
  @public = settings.public

  # If you actually need the path to a specific file
  @main = File.join( settings.public, 'main.js' )

  # If you actually need the contents of a file
  @js = IO.read( File.join( settings.public, 'main.js' ) )
end

关于ruby - 有没有一种简单的方法可以引用Sinatra中的公共(public)目录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4750046/

10-13 04:45