没有帮助,Sinatra无法提供JavaScript文件?它是否正确?

时间:2010-07-27 15:59:00

标签: ruby model-view-controller sinatra

好的,所以我说这个没有问题,但我想确保我做得对,因为从长远来看,这似乎是一项额外的工作。

我正在使用Sinatra并使用HAML模板。我想在我的HAML文件中包含一个JavaScript文件。我的目录结构如下所示:

  • 媒体/
    • JS​​ /
      • init.js (我要包含的文件)
    • CSS /
  • 模型/
  • 视图/
    • layout.haml
  • 路由/
  • init.rb
  • bootstrap.rb (包含在init.rb中)

当我尝试包含文件(没有额外的路由或任何东西)时,我得到一个页面无法找到错误。但是,如果我添加此代码,那么它可以正常工作:

get '/media/js/:name' do
    begin
        send_file('media/js/' + params[:name])
    rescue
       "There's nothing for you here"
    end
end

我这样做是为了提供我的媒体/静态文件没有问题,但我只是想确保这是必要的,我想避免这是可能的。

修改

我将以下代码包含在我的bootstrap.rb文件中,但无济于事:

set :root, File.dirname(__FILE__)
enable :static

1 个答案:

答案 0 :(得分:9)

来自Sinatra's Website

  

静态文件从./public目录提供。您可以   通过设置:public选项指定其他位置:

set :public, File.dirname(__FILE__) + '/static'

您正在media目录中投放。