【问题标题】:Sinatra application cannot find views directorySinatra 应用程序找不到视图目录
【发布时间】:2012-09-22 05:24:54
【问题描述】:

我正在尝试创建一个模块化的 sinatra 应用程序,并且需要我的每个子应用程序在我的项目文件夹的根目录中查找 views 目录。但它只在子目录本身而不是根目录中查找视图目录。这是我的项目的样子:

├── config.ru
├── music_catalog
│   └── app.rb
├── public
│   ├── css
│   │   └── site.css
│   └── images
│       ├── content_top_bg.jpg
│       ├── demo_image_01.jpg
│       ├── god_save_http_it_aint_no_human_being.png
│       ├── header_bg.jpg
│       ├── home-showcase.png
│       ├── hover_link_bg.jpg
│       ├── its_little_its_blue_and_its_magical.jpeg
│       ├── linkbar_bg.jpg
│       ├── logo.png
│       ├── main_graphics.jpg
│       ├── placeholder.gif
│       ├── placeholder.jpg
│       ├── placeholder.png
│       ├── right_navbar_bg.jpg
│       └── shadow_left.jpg
└── views
    ├── album.haml
    ├── genre.haml
    ├── index.haml
    ├── layout.haml
    ├── login.haml
    └── not_found.haml

所以在我的 config.ru 中我尝试这样做:

require 'sinatra'

require './music_catalog/app.rb'

set :root, File.dirname(__FILE__)


# enable :run

map "/" do
   run MusicCatalog
end

app.rb 内部的music_catalog 中,我像这样使用根变量:

require 'sinatra/base'

`# I thing I am doing this wrong`

set :views, Proc.new { File.join(root, "sites/#{site}/views") }

class MusicCatalog < Sinatra::Base
   get "/" do
      haml :index
   end
end

但不是将我的index.haml 从我的根目录中提取出来,而是如下所示:

Errno::ENOENT at /
No such file or directory - /Users/amiterandole/Dropbox/code/rsandbox/sinatra_music_store/music_catalog/views/index.haml

我正在使用ruby 1.9.3p194

请帮我将视图目录设置到根views 文件夹中的正确位置。

【问题讨论】:

    标签: ruby views sinatra


    【解决方案1】:

    好的,我想通了。 set :views 语句实际上应该在我的应用程序类中,如下所示:

    class MusicCatalog < Sinatra::Base
    
      **set :views, Proc.new { File.join(root, "../views") }**
    
      get "/" do
        haml :index
      end
    end
    

    而且我之前以错误的方式加入了根。解决了这个问题。现在 sinatra 正在正确加载我的模板

    【讨论】:

    • 干得好。我只是想把我的 git hub 项目链接给你.. 恭喜
    猜你喜欢
    • 2013-01-04
    • 2011-01-08
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 2021-03-26
    • 2019-05-19
    相关资源
    最近更新 更多